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字头,汉字乱码
PHP中文网2017-04-17 17:52:05
これは Excel の問題です。
Excel は数値列かどうかを推測します。数値列の場合は、デフォルトで数値で表示されます (0 は省略されます)。
Excel のデフォルトの形式はローカル文字セットです (簡体字中国語バージョンは gbk
)。ファイルの前に 3 文字の BOM ヘッダーが追加されない限り、BOM 形式のない utf8
形式は自動的に認識されません。 。 (Office 2007 の特定のバージョンでは、BOM ヘッダーを持つ utf8
ファイルにもバグがあります)
テキストエディター (notepad
ではありません) で開き、内容を確認してください。
追加説明:
Microsoft の古いソフトウェアは、BOM のない UTF8 ファイルのサポートが不十分です。 bom ヘッダーは、utf8 ファイルの先頭に 3 文字を加えたものです (16 進数は EFBBBF
)。具体的には utf8 bom头
を検索できます。
完璧な解決策はありません。状況に応じて選択できるようにリストを示します。
utf
エンコーディングを維持したい場合は、ファイルの前に Bom
ヘッダーを追加してみてください。 (つまり、ファイルに書き込む前に 3 文字を書き込みます)
Excel のみで中国本土で使用される場合は、ファイルを GBK
エンコードで直接書き込むことができます。
天蓬老师2017-04-17 17:52:05
私のテストの結果:
リーリープレーン テキスト ファイルには何も問題がないようですが、CSV ファイルを開くために 使用したスプレッドシート ソフトウェア が原因である可能性があります。 (Mac の Numbers
と OpenOffice Calc
の両方でこの現象が発生します)
たとえば、id フィールドの型が数値に設定されている場合、先頭にある不要な 0 は自動的に無視されることがあります。 このように、プレーンテキストに変更してからオンにしてみてください。
追記Excel
の部分は Yuhe CC の説明書にあります。
xlsx ファイルをより正確かつ詳細に処理するには、データ型 (データ型) と形式 (フォーマット) さえも制御できる XlsxWriter を使用できます。