python中的'ascii'编码错误

时间:2016-04-12 15:33:23

标签: python api unicode encoding ascii

我正在编写代码以从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)

1 个答案:

答案 0 :(得分:1)

使用utf-8编码将文件打开为文本文件:

f = open(cache_fname, 'wt', encoding='utf-8')

但这只适用于Python 3。

Python 2:

如果resp.text是一个unicode字符串,resp.text.encode(' utf-8')应该有效。