我正在编写代码以从NPR API获取信息,并且我一直遇到编码错误。我试过了.encode('utf-8')
,但我似乎无法找到它放在哪里而且我一直收到错误。
这是我的代码:
import json
import requests
def pretty(obj):
return json.dumps(obj, sort_keys = True)
def NPR(
baseurl = 'http://api.npr.org/query?',
apiKey = 'MDIzNjY4Mzk5MDE0NjAzMTcwMzNjNGZjOA000',
id = '1126',
output = 'json',
numResults = '50',
feilds = 'text',
dateType = 'story',
cache_fname="cached_data.txt",
extra_params={}):
d = {}
d['id'] = id
d['feilds'] = feilds
d['dateType'] = dateType
d['output'] = output
d['numResults'] = numResults
d['apiKey'] = apiKey
resp = requests.get(baseurl, params = d)
print resp.url
print "caching data"
f = open(cache_fname, 'w')
f.write(resp.text)
f.close()
return resp.text
NPR(cache_fname="NPR_Africa.txt")
我得到的错误是:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 10636: ordinal not in range(128)
在f.write(resp.text)
答案 0 :(得分:1)
使用utf-8编码将文件打开为文本文件:
f = open(cache_fname, 'wt', encoding='utf-8')
但这只适用于Python 3。
Python 2:
如果resp.text是一个unicode字符串,resp.text.encode(' utf-8')应该有效。