python数据写入csv会丢失0字头_python csv模块生成CSV文件,0字头数字缺失,汉字乱码...

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字头,汉字乱码

《python数据写入csv会丢失0字头_python csv模块生成CSV文件,0字头数字缺失,汉字乱码...》

是 Excel 的问题。

Excel 会自己猜测是否是一个数字列,如果是数字列,默认是会按数字显示(省略0)。

Excel 默认格式为本地字符集(简体中文版是

gbk

),它无法自动识别无BOM格式的

utf8

格式,除非在文件前面加上3字符的BOM头。(在 office 2007 下的某个版本,对有BOM头的

utf8

文件也有Bug)

你应该使用文本编辑器(不要用

notepad

)打开看看里面的内容。

补充说明下:

微软家的老牌软件对于utf8无bom文件的支持都很弱。bom头是utf8文件开头加上三个字符(十六进制是

EFBBBF

),具体可以搜索

utf8 bom头

没有太完美的方案,我列出来你根据情况选择一下:

如果想保持

utf

编码,可以尝试在文件前加上

Bom

头。(就是写入文件前先写入三字符)

如果只是给 Excel 使用,并且在大陆使用,你可以直接把文件写成

GBK

编码。

我測試的結果:

id,url,keywords

0011,http://www.59store.com/,59store.com

0022,http://59data.top/,59data.top

0033,http://my.space.zmx/,汉子乱码?

看起來純文字 file 沒有什麼問題,猜測可能是你用來開啟 csv 文件的試算表軟體造成的.(mac 的

Numbers

OpenOffice Calc

都有這個現象)

比如說,id 欄位的型態如果設為數字,則前面不必要的 0 可能會自動被忽略. 像這一點可以試試看改成純文字型態再開啟.

P.S.

Excel

的部分可以見 玉河CC 大的說明.

要更精準更細節地處理 xlsx 文件,可以用 XlsxWriter,他能夠控制資料的型態(data type),甚至樣式(format).

    原文作者:誉儿他爸
    原文地址: https://blog.csdn.net/weixin_33132251/article/details/112830613
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞