我有一个表示字典的字符串。字符串的格式包括“ \ x7B”之类的字符(对不起,我不确定该怎么称呼-反斜杠编码?)它还包含“ \ u00fa”形式的重音字符(再次,对不起,我不确定这叫做什么)。我想:
很难说出幕后情况,因为当我打印这些字符串时,它会自动将“ \ x7B”样式的字符转换为它们的“普通”等价物。
例如,我希望能够将'\x7B\x22h\x22\x3A\x22Ra\x5Cu00fal\x22\x7D'
转换为'{"h":"Raul"}'
旁注:
我如何将'\x7B\x22h\x22\x3A\x22Ra\x5Cu00fal\x22\x7D'
视为'\x7B\x22h\x22\x3A\x22Ra\x5Cu00fal\x22\x7D'
而不是'{"h":"Ra\\u00fal"}'
?
此外,如果您可以包括每种字符串格式的正确名称(编码?),那么我可以更新问题名称,使其更适合将来参考,那就太好了。
答案 0 :(得分:1)
您可以使用json.loads
将编码后的字符串转换为dict,然后对其进行规范化,最后将其转换为等效的ascii
>>> import unicodedata
>>> import json
>>>
>>> s = '\x7B\x22h\x22\x3A\x22Ra\x5Cu00fal\x22\x7D'
>>> unicodedata.normalize('NFKD', str(json.loads(s))).encode('ascii','ignore').decode()
"{'h': 'Raul'}"