通过API访问this Glosbe.com时,以下代码无法解码特殊字符或撇号。
例如,它会打印perché
,而不是perché
。在检查网站来源时,它说charset是utf-8。有什么想法吗?
# -*- coding: utf-8 -*-
import urllib.request
import json
url = ' http://glosbe.com/gapi/translate?from=fra&dest=eng&format=json&phrase=chat&pretty=true'
weburl = urllib.request.urlopen(url)
data = weburl.read().decode('utf-8')
theJSON = json.loads(data)
print(theJSON)
答案 0 :(得分:1)
该网站似乎为您提供HTML实体数据。使用以下命令解码HTML实体:
from html.parser import HTMLParser
def unescape_entities(value, parser=HTMLParser()):
return parser.unescape(value)
def process(ob):
if isinstance(ob, list):
return [process(v) for v in ob]
elif isinstance(ob, dict):
return {k: process(v) for k, v in ob.items()}
elif isinstance(ob, str):
return unescape_entities(ob)
return ob
theJSON = process(theJSON)
演示:
>>> theJSON['tuc'][0]['meanings'][-1]
{'language': 'fra', 'text': 'Mammifère carnivore, félin de taille moyenne au museau court et arrondi, domestiqué ou encore à l'état sauvage (Felis silvestris).'}
>>> theJSON = process(theJSON)
>>> theJSON['tuc'][0]['meanings'][-1]
{'language': 'fra', 'text': "Mammifère carnivore, félin de taille moyenne au museau court et arrondi, domestiqué ou encore à l'état sauvage (Felis silvestris)."}