我从中文网站上删了一本词典。全部使用unicode处理。现在我想将数据写入csv文件。第一行包含所有dict.keys(),第二行包含所有dict.values()
如何将此词典写入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 :(得分:2)
如果您使用本机使用Unicode的Python3,那将是微不足道的:
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 dict,您只需在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)
答案 1 :(得分:0)
尝试使用codecs
模块。
import codecs
with codecs.open(filename, "w", "utf-8") as f:
for key, value in data.iteritems():
f.write(key+','+value+'\n')
这应该具有所需的行为
答案 2 :(得分:-1)
'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)