python csv模块生成CSV文件,0字头数字缺失,汉字乱码
天蓬老师
天蓬老师 2017-04-17 17:50:05
0
2
984

python CSV模块 写入CSV文件时,0开头的数字会丢失

# _*_ coding:utf-8 _*_
#win7+python2.7.x
import csv
csvfile = file('csvtest.csv', 'wb')
writer = csv.writer(csvfile)
writer.writerow(['id', 'url', 'keywords'])
data = [
  ('0011', 'http://www.59store.com/', '59store.com'),
  ('0022', 'http://59data.top/', '59data.top'),
  ('0033', 'http://my.space.zmx/', '汉子乱码?')
]
writer.writerows(data)
csvfile.close()

写入CSV时会丢失0字头,汉字乱码

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(2)
洪涛

C’est un problème Excel.

Excel devinera s'il s'agit d'une colonne numérique. S'il s'agit d'une colonne numérique, elle sera affichée numériquement par défaut (0 est omis).
Le format par défaut d'Excel est le jeu de caractères local (la version chinoise simplifiée est gbk). Il ne peut pas reconnaître automatiquement le format utf8 sans le format BOM à moins qu'un en-tête de nomenclature à 3 caractères ne soit ajouté devant le fichier. . (Dans une certaine version sous office 2007, il y a aussi un bug pour les utf8 fichiers avec en-têtes de BOM)

Vous devez l'ouvrir avec un éditeur de texte (pas notepad) et jeter un œil au contenu.


Explication supplémentaire :
L'ancien logiciel de Microsoft ne prend pas en charge les fichiers UTF8 sans nomenclature. L'en-tête bom est le début du fichier utf8 plus trois caractères (l'hexadécimal est EFBBBF Vous pouvez rechercher utf8 bom头 spécifiquement).
Il n'y a pas de solution parfaite, je vous la liste à choisir en fonction de la situation :

  1. Si vous souhaitez conserver l'encodage utf, vous pouvez essayer d'ajouter l'en-tête Bom devant le fichier. (C'est-à-dire, écrivez trois caractères avant d'écrire dans le fichier)

  2. S'il s'agit uniquement pour Excel et utilisé en Chine continentale, vous pouvez directement écrire le fichier en GBK encodage.

Peter_Zhu

Les résultats de mon test :

id,url,keywords
0011,http://www.59store.com/,59store.com
0022,http://59data.top/,59data.top
0033,http://my.space.zmx/,汉子乱码?

Il semble qu'il n'y ait rien de mal avec le fichier texte brut. Je suppose que cela peut être dû au logiciel de feuille de calcul que vous utilisez pour ouvrir le fichier csv. (Les Numbers et OpenOffice Calc de Mac ont tous deux ce phénomène)

Par exemple, si le type du champ id est défini sur un nombre, le 0 inutile devant peut être automatiquement ignoré. Comme ça, vous pouvez essayer de le changer en texte brut, puis de l'activer.

P.S. La partie de Excel se trouve dans les instructions de Yuhe CC.

Pour traiter les fichiers xlsx avec plus de précision et de détails, vous pouvez utiliser XlsxWriter, qui peut contrôler le type de données (type de données) et même le format (format).

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal