[英]UnicodeEncodeError with Python 2.7 csv.writer
我正在尝试将数据从json文件转换为csv文件。
with open('data.json') as data_file:
x = json.load(data_file)
g = csv.writer(open("output.csv", "wb+"))
g.writerow(["name", "price", "1 star", "2 star", "3 star", "4 star", "5 star", "review_author", "review_comment_count", "review_header",
"review_posted_date", "review_rating", "review_text", "url"].encode('utf-8'))
for x in x:
for i in range(len(x["reviews"])):
g.writerow([x["name"],
x["price"],
x["ratings"]["1 star"],
x["ratings"]["2 star"],
x["ratings"]["3 star"],
x["ratings"]["4 star"],
x["ratings"]["5 star"],
x["reviews"][i]["review_author"],
x["reviews"][i]["review_comment_count"],
x["reviews"][i]["review_header"],
x["reviews"][i]["review_posted_date"],
x["reviews"][i]["review_rating"],
x["reviews"][i]["review_text"],
x["url"]])
我希望得到一个包含所有列(价格,1星,2星等)的CSV文件,并以行作为相应数据。
相反,我得到一个错误:
追溯(最近一次通话最近):ReadAsin()中的文件“ scraper5.py”,第162行,ReadAsin x [“ url”]中的文件“ scraper5.py”,行159 x。“ encode('utf8')]))UnicodeEncodeError :'ascii'编解码器无法在位置377处编码字符u'\\ u2019':序数不在范围内(128)
如果我注释掉第159行,则x [“ reviews”] [i] [“ review_text”]会出现相同的错误。 我已经在这里查询了以前的问题,但是所有解决方案似乎都无效。 有关如何解决此问题的任何建议?
您的脚本失败,因为json文件包含一些非ascii字符,并且系统默认编码char-set ascii无法传输它,超出范围(128)。
尝试对要输出到文件中的所有行进行显式编码,例如
g.writerow([x["name"].encode('utf8'),
x["reviews"][i]["review_author"].encode('utf8'),
x["reviews"][i]["review_comment_count"].encode('utf8')
x["url"].encode('utf8')])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.