2017-12-28 37 views
1

requestsライブラリを使用してPython3でGithubのジョブAPIにクエリを実行していますが、応答の解析中にエラーが発生しています。"要求"応答のjson()がUnicodeEncodeErrorを発生させます

図書館:http://docs.python-requests.org/en/latest/

コード:

import requests 
import json 

url = 'https://jobs.github.com/positions.json?' 

response = requests.get(url) 

print(response.json()) 

エラー:

UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 321: ordinal not in range(128)

ルビーと過去にこのAPIを使用して、私はこの問題に遭遇したことがありません。

辞書に変換しようとしましたが、同じエラーが発生しました。

UnicodeEncodeError(ほとんどの場合、ファイルを開く)についての他の質問がありますが、私はPythonに慣れておらず、有用ではありません。

+0

可能な重複:「ASCII」コーデックをすることはできませんキャラクタu '\ xa0'を位置20にエンコードする:序数が範囲内にない(128)](https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-ポジション-20) – Beefster

答えて

0

まず、レスポンスが実際にJSONであることを確認します。 response.textを印刷し、有効なJSONオブジェクトのように見えるかどうか確認してください。

それはJSONをそれと仮定すると:それは非常に-eyを「ハック」ですが、あなたは彼らのエスケープUnicode表現で非ASCII文字を置き換えることができます。UnicodeEncodeErrorを[の

def escape_unicode(c): 
    return c.encode('ascii', 'backslashreplace').decode('ascii') 

response = ... 

text = response.text 
escaped = re.sub(r'[^\x00-\x7F]', lambda m: escape_unicode(m.group(0)), text) 
json_response = json.loads(escaped) 
関連する問題