【发布时间】:2014-12-25 11:30:07
【问题描述】:
我想运行这个代码块:
>>> json1 = json.loads("""[{"categoryId":"32","nameAr":"\u0627\u0643\u0644 \u0633\u0631\u064a\u0639","nameEn":"Fast Food"}]""")
>>> file1 = open("test.csv","w")
>>> fieldnames = json1[0].keys()
>>> writer = csv.DictWriter(file1, fieldnames=fieldnames)
>>> writer.writeheader()
>>> writer.writerow(json1[0])
但我收到此错误:'ascii' codec can't encode characters in position 0-2,我认为这是因为我应该将 json1 值编码为 utf-8 ,我该怎么做?
【问题讨论】:
-
这与 JSON 编码无关,而是与您写入数据的方式有关。该文件配置为使用 ASCII 编码,由于 JSON 包含非 ASCII 字符,因此该编码不起作用。您也许可以告诉 JSON 编码器转义那些,以便只使用 ASCII 或更改文件编码。
-
你从 UTF-8解码,encode到UTF-8。
-
是重复的,只改一行
writer.writerow({k.encode('utf8'): v.encode('utf8') for k, v in json1[0].iteritems()}) -
@jamylak 谢谢你,这就是我正在寻找的 :)
标签: python json python-2.7 python-3.x encode