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字头,汉字乱码
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 formatutf8
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 lesutf8
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 rechercherutf8 bom头
spécifiquement).Il n'y a pas de solution parfaite, je vous la liste à choisir en fonction de la situation :
Si vous souhaitez conserver l'encodage
utf
, vous pouvez essayer d'ajouter l'en-têteBom
devant le fichier. (C'est-à-dire, écrivez trois caractères avant d'écrire dans le fichier)S'il s'agit uniquement pour Excel et utilisé en Chine continentale, vous pouvez directement écrire le fichier en
GBK
encodage.Les résultats de mon test :
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
etOpenOffice 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).