2016-11-15 153 views
0

我有一本從中文網站上下載的字典。全部使用unicode進行處理。現在我想將數據寫入一個csv文件。第一行包含所有的dict.keys(),第二行包含所有的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

如果你使用Python3原生地使用Unicode這將是微不足道:

import csv 

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

當你與u前綴的unicode字符串,我認爲你使用Python2。 csv模塊處理csv文件非常棒,但Python2版本本身不處理Unicode字符串。要處理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文件的一種方法是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 codecs 
with codecs.open(filename, "w", "utf-8") as f: 
    for key, value in data.iteritems(): 
     f.write(key+','+value+'\n') 

這應該有desidered行爲