Ich mache einen API-Aufruf und die Antwort hat Unicode-Zeichen. führt die folgenden Fehler diese Antwort in eine Datei zu laden:Unicode-API-Antwort wirft Fehler "Ascii" Codec kann nicht Zeichen u 'u2019' in Position 22462 codieren '
'ascii' codec can't encode character u'\u2019' in position 22462
alle Kombinationen von Decodierung und -Codierung Versucht (‚UTF-8‘). Hier
ist der Code:
url = "https://%s?start_time=%s&include=metric_sets,users,organizations,groups" % (api_path, start_epoch)
while url != None and url != "null" :
json_filename = "%s/%s.json" % (inbound_folder, start_epoch)
try:
resp = requests.get(url,
auth=(api_user, api_pwd),
headers={'Content-Type': 'application/json'})
except requests.exceptions.RequestException as e:
print "|********************************************************|"
print e
return "Error: {}".format(e)
print "|********************************************************|"
sys.exit(1)
try:
total_records_extracted = total_records_extracted + rec_cnt
jsonfh = open(json_filename, 'w')
inter = resp.text
string_e = inter#.decode('utf-8')
final = string_e.replace('\\n', ' ').replace('\\t', ' ').replace('\\r', ' ')#.replace('\\ ',' ')
encoded_data = final.encode('utf-8')
cleaned_data = json.loads(encoded_data)
json.dump(cleaned_data, jsonfh, indent=None)
jsonfh.close()
except ValueError as e:
tb = traceback.format_exc()
print tb
print "|********************************************************|"
print e
print "|********************************************************|"
sys.exit(1)
viele Entwickler dieses Problem konfrontiert. viele Orte haben gebeten, .decode('utf-8')
oder mit # _*_ coding:utf-8 _*_
an der Spitze von Python zu verwenden.
Es hilft immer noch nicht.
Kann mir jemand mit diesem Problem helfen.
Hier ist die Spur:
Traceback (most recent call last):
File "/Users/SM/PycharmProjects/zendesk/zendesk_tickets_api.py", line 102, in main
cleaned_data = json.loads(encoded_data)
File "/Users/SM/anaconda/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/Users/SM/anaconda/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Users/SM/anaconda/lib/python2.7/json/decoder.py", line 380, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Invalid \escape: line 1 column 2826494 (char 2826493)
|********************************************************|
Invalid \escape: line 1 column 2826494 (char 2826493)
Nur um sicher zu sein, in welcher Zeile der Interpreter stoppt? – fedterzi
Bitte geben Sie den vollständigen Stack-Trace an. – univerio
Verwenden Sie Anfragen? Wenn ja, benutze 'resp.json()', wenn du willst json –