ホームページ  >  に質問  >  本文

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

天蓬老师天蓬老师2742日前949

全員に返信(2)返信します

  • PHP中文网

    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头 を検索できます。
    完璧な解決策はありません。状況に応じて選択できるようにリストを示します。

    1. utf エンコーディングを維持したい場合は、ファイルの前に Bom ヘッダーを追加してみてください。 (つまり、ファイルに書き込む前に 3 文字を書き込みます)

    2. Excel のみで中国本土で使用される場合は、ファイルを GBK エンコードで直接書き込むことができます。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:52:05

    私のテストの結果:

    リーリー

    プレーン テキスト ファイルには何も問題がないようですが、CSV ファイルを開くために 使用したスプレッドシート ソフトウェア が原因である可能性があります。 (Mac の NumbersOpenOffice Calc の両方でこの現象が発生します)

    たとえば、id フィールドの型が数値に設定されている場合、先頭にある不要な 0 は自動的に無視されることがあります。 このように、プレーンテキストに変更してからオンにしてみてください。

    追記Excelの部分は Yuhe CC の説明書にあります。

    xlsx ファイルをより正確かつ詳細に処理するには、データ型 (データ型) と形式 (フォーマット) さえも制御できる XlsxWriter を使用できます。

    返事
    0
  • キャンセル返事