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

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

天蓬老师
天蓬老师

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

全部回覆(2)
洪涛

是 Excel 的問題。

Excel 會自己猜測是否為數字列,如果是數字列,預設會以數字顯示(省略0)。
Excel 預設格式為本地字元集(簡體中文版是gbk),它無法自動辨識無BOM格式的utf8格式,除非在檔案前面加上3字元的BOM頭。 (在 office 2007 下的某個版本,對有BOM頭的utf8檔案也有Bug)gbk),它无法自动识别无BOM格式的utf8格式,除非在文件前面加上3字符的BOM头。(在 office 2007 下的某个版本,对有BOM头的utf8文件也有Bug)

你应该使用文本编辑器(不要用notepad)打开看看里面的内容。


补充说明下:
微软家的老牌软件对于utf8无bom文件的支持都很弱。bom头是utf8文件开头加上三个字符(十六进制是EFBBBF),具体可以搜索utf8 bom头
没有太完美的方案,我列出来你根据情况选择一下:

  1. 如果想保持 utf 编码,可以尝试在文件前加上 Bom 头。(就是写入文件前先写入三字符)

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

    你應該使用文字編輯器(不要用notepad)打開看看裡面的內容。

補充說明下:🎜微軟家的老牌軟體對於utf8無bom檔案的支援都很弱。 bom頭是utf8檔案開頭加上三個字元(十六進位是EFBBBF),具體可以搜尋utf8 bom頭。 🎜沒有太完美的方案,我列出來你根據情況選擇:🎜
  1. 🎜如果想保持 utf 編碼,可以嘗試在檔案前加上 Bom 頭。 (就是寫入文件前先寫入三字符)🎜🎜
  2. 🎜如果只是給 Excel 使用,並且在大陸使用,你可以直接把檔案寫成 GBK編碼。 🎜🎜 🎜
Peter_Zhu

我測試的結果:

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

看起來純文字 file 沒有什麼問題,猜測可能是你用來開啟 csv 檔案的試算表軟體造成的. (mac 的 NumbersOpenOffice Calc 都有這個現象)NumbersOpenOffice Calc 都有這個現象)

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

P.S. Excel

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

P.S. Excel 的部分可以見 玉河CC 大的說明. 🎜 🎜要更精準更細節地處理 xlsx 文件,可以用 XlsxWriter,他能夠控制資料的型態(data type),甚至樣式(format). 🎜
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!