2016-11-15 155 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行为