首页 > 解决方案 > 用普通字母替换特殊的 unicode 字符

问题描述

在我的 JSON 数据中,有特殊的 Unicode 字符,如“\u00E0”、“\u00FB”等。我想用普通字母替换所有这些字符。例如,"\u00E0""à""\u00FB""û"。有很多这样的角色,所以我会找到他们的列表。

我已经尝试将其替换为

dictData.encode('utf-8').decode('unicode_escape') 

dictData.replace("\u00E0", "à").replace("\u00E4", "ä").replace("\u00E2", "â").replace("\u00E7", "ç").replace("\u00E8", "è").replace("\u00E9", "é").replace("\u00EA", "ê").replace("\u00EB", "ë").replace("\u00EE", "î").replace("\u00EF", "ï").replace("\u00F4", "ô").replace("\u00F6", "ö").replace("\u00F9", "ù").replace("\u00FB", "û").replace("\u00FC", "ü").replace("\u00FC", "ù").replace("\u00FB", "û").replace("\u00FC", "î").replace

但两者都没有奏效。这是我的代码

import re, sys
from urllib.request import urlopen
import json

patternScript = re.compile("""<script>window\.\_\_WEB\_CONTEXT\_\_\=\{pageManifest:(.*?)\};</script>""", re.DOTALL)

with urlopen("https://www.tripadvisor.ch/Hotel_Review-g188113-d228146-Reviews-Coronado_Hotel-Zurich.html") as response:
    source = str(response.read())
    dictData = patternScript.search(source).group(1).replace('\\ "', '\\"').replace('\\"', '\"').replace("\'", "\\'")
    dictData2 = dictData.encode('utf-8').decode('unicode_escape')
    #dictData2 = dictData.replace("\u00E0", "à").replace("\u00E4", "ä").replace("\u00E2", "â").replace("\u00E7", "ç").replace("\u00E8", "è").replace("\u00E9", "é").replace("\u00EA", "ê").replace("\u00EB", "ë").replace("\u00EE", "î").replace("\u00EF", "ï").replace("\u00F4", "ô").replace("\u00F6", "ö").replace("\u00F9", "ù").replace("\u00FB", "û").replace("\u00FC", "ü")

    jsonData = json.loads(dictData2)

这是 JSON 数据的示例:

[{'long': 'Z\\u00FCrich, Schweiz', 'text': 'Lieber Gast\\n\\nDanke f\\u00FCr die nette R\\u00FCckmeldung zu Ihrem Aufenthalt im Hotel Coronado.  Sch\\u00F6n, konnten Sie die Tramstation Milchbuck gleich gegen\\u00FCber des Hotels, mit  direkten Verbindungen ins Stadtzentrum und zum Flughafen Z\\u00FCrich f\\u00FCr sich nutzen.\\n\\nWir freuen uns auf Ihren n\\u00E4chsten Aufenthalt und verbleiben mit\\n\\nHerzlichen Gr\\u00FCssen \\n\\nOlivia Olgiati\\n\\n'}]

你有什么建议吗?先感谢您!

标签: pythonjsonunicode

解决方案


希望它对你有用:

with urlopen("https://www.tripadvisor.ch/Hotel_Review-g188113-d228146-Reviews-Coronado_Hotel-Zurich.html") as response: 
    source = response.read()
    dictData = patternScript.search(source.decode("utf-8")).group(1)
    jsonData = json.loads(dictData)

推荐阅读