我正在制作一个python代码,该代码将在将JSON文件转换为csv的服务器上运行。 (通过网址提供的JSON)
除非密钥的值是unicode,否则一切进展顺利。
像这样:
{u'name':u'\xc3\x86\xc3\x9f\xc3\xb8\xc3\xa4\xc3\xae\xc3\xa8t\xc3\xae\xc3\xbf' , u'otherinfo' : u'info'}
出现此错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
我知道python尝试解码unicode但失败了,但我不知道如何解决这个问题。
这是我到目前为止所做的:
#!/usr/bin/env python
import urllib2 as url
import json
import ast
print("Extracting data from API")
request = url.Request('url')
data = url.urlopen(request).read()
data = data.decode("iso-8859-1")
print("changed")
data = ast.literal_eval(data)
data = json.dumps(data)
import json, csv
outfile = open("output.csv", "w")
fieldnames = ['names','otherinfo']
writer = csv.DictWriter(outfile , fieldnames=fieldnames, lineterminator='\n' )
print("Writing csv file")
row = json.loads(data)
for player in row["rows"]:
print(player)
writer.writerow(player)
outfile.close()
print("Writing complete")