2017-12-28 10 views
1

requests 라이브러리를 사용하여 Github의 Jobs API에 python3을 쿼리했지만 응답 구문 분석 오류가 발생했습니다."requests"응답의 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 (주로 파일 열기)에 대한 의문점이 있지만 파이썬에 익숙하지 않아 도움이되지 않습니다.

+0

가능한 중복 : '아스키'코덱이 없습니다 문자 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 객체로 보이는지 확인하십시오. 매우 -ey을 "해킹",하지만 당신은 그들의 탈출 유니 코드 표현에 비 ASCII 문자를 대체 할 수있다 :

는 JSON 그것은 가정 [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) 
관련 문제