2016-11-15 23 views
0

私は中国語のWebサイトから辞書を拾いました。すべてがユニコードで処理されます。今私はcsvファイルにデータを書きたいと思います。最初の行にはすべてのdict.keys()が含まれ、2行目にはすべてのdict.values()が含まれます。Python2.7 Unicode辞書をCSVファイルに書き込む

この辞書をcsvに書き込む方法は?特に、私はcsvに表示されているすべての中国語文字が必要です。私はそれらを変換することに問題があります。事前に

おかげで、

data = {u'\u6ce8\u518c\u8d44\u672c': u'6500\u4e07\u5143\u4eba\u6c11\u5e01[8]', u'\u7ecf\u8425\u8303\u56f4': u'\u4e92\u8054\u7f51', u'\u5b98\u7f51': u'http://www.tencent.com/', u'\u6210\u7acb\u65f6\u95f4': u'1998\u5e7411\u670811\u65e5[8]', u'\u6ce8\u518c\u53f7': u'440301103448669[8]', u'\u5e74\u8425\u4e1a\u989d': u'1028.63\u4ebf\u5143\u4eba\u6c11\u5e01\uff082015\u5e74\uff09[9]', u'\u521b\u59cb\u4eba': u'\u9a6c\u5316\u817e\u5f20\u5fd7\u4e1c\u8bb8\u6668\u6654\u9648\u4e00\u4e39\u66fe\u674e\u9752[10]', u'\u603b\u90e8\u5730\u70b9': u'\u4e2d\u56fd\u6df1\u5733', u'\u603b\u88c1': u'\u5218\u70bd\u5e73', u'\u6ce8\u518c\u5730': u'\u6df1\u5733', u'\u5916\u6587\u540d\u79f0': u'Tencent', u'\u8463\u4e8b\u5c40\u4e3b\u5e2d': u'\u9a6c\u5316\u817e', u'\u5458\u5de5\u6570': u'2.5\u4e07\u4f59\u4eba\uff082014\u5e74\uff09', u'\u516c\u53f8\u6027\u8d28': u'\u6709\u9650\u8d23\u4efb\u516c\u53f8[8]', u'\u516c\u53f8\u53e3\u53f7': u'\u4e00\u5207\u4ee5\u7528\u6237\u4ef7\u503c\u4e3a\u4f9d\u5f52', u'\u4f01\u4e1a\u613f\u666f': u'\u6700\u53d7\u5c0a\u656c\u7684\u4e92\u8054\u7f51\u4f01\u4e1a', u'\u516c\u53f8\u4f7f\u547d': u'\u901a\u8fc7\u4e92\u8054\u7f51\u670d\u52a1\u63d0\u5347\u4eba\u7c7b\u751f\u6d3b\u54c1\u8d28', u'\u6cd5\u5b9a\u4ee3\u8868\u4eba': u'\u9a6c\u5316\u817e', u'\u767b\u8bb0\u673a\u5173': u'\u6df1\u5733\u5e02\u5e02\u573a\u76d1\u7763\u7ba1\u7406\u5c40\u5357\u5c71\u5c40[8]', u'\u516c\u53f8\u540d\u79f0': u'\u6df1\u5733\u5e02\u817e\u8baf\u8ba1\u7b97\u673a\u7cfb\u7edf\u6709\u9650\u516c\u53f8[8]'} 

答えて

0

を持つべきですPython2を使用します。 csvモジュールはcsvファイルを処理するのに最適ですが、Python2バージョンはネイティブにUnicode文字列を処理しません。ユニコード辞書を処理するには、そのキーと値をutf8でエンコードすればよい:

import csv 

utf8data = { k.encode('utf8'): v.encode('utf8') for (k,v) in data.iteritems() } 
with open("file.csv", "wb") as fd: 
    dw = DictWriter(fd, utf8data.keys() 
    dw.writeheader() 
    dw.writerow(utf8data) 
0

'UTF-8' エンコーディングは、問題を解決します。辞書をcsvファイルに変換する方法の1つは、pandasです。問題を簡単に解決できます。

import pandas as pd 

df = pd.DataFrame.from_dict(data, orient='index') 
df.to_csv('output.csv', encoding='utf-8', header=None) 
0

codecsモジュールを使用してみてください。

import csv 

with open("file.csv", "w", newline='', encoding='utf8') as fd: 
    dw = DictWriter(fd, data.keys() 
    dw.writeheader() 
    dw.writerow(data) 

あなたがuとあなたのUnicode文字列を接頭辞として、私がいることを前提としています

import codecs 
with codecs.open(filename, "w", "utf-8") as f: 
    for key, value in data.iteritems(): 
     f.write(key+','+value+'\n') 

これは、あなたがネイティブにUnicodeを使用するのpython3を使用していた場合、それは些細なことでしょうdesidered行動

関連する問題