Python 3 - декодировать экранированную строку - PullRequest
0 голосов
/ 25 сентября 2019

Я работаю над простым скриптом Python.К сожалению, некоторые данные, с которыми я должен работать, хранятся следующим образом:

Мои данные

trouble_string = '{\"N\": \"Centr\\u00e1lna nervov\\u00e1 s\\u00fastava\"}'

Чего я хочу достичь

Я хочу преобразовать строку в следующем формате.

decoded_string = '{"N": "Centrálna nervová sústava"}'

Задача

Вы видите буквы с акцентом в цифровом коде.Есть какой-нибудь умный способ, как декодировать эту строку?

Что я пробовал

bytes(s, encoding='utf-8').decode(encoding='utf-16')
# outputs: '䌢湥牴畜〰ㅥ湬\u2061敮癲癯畜〰ㅥ猠畜〰慦瑳癡≡'

bytes(s, encoding='utf-16').decode(encoding='utf-8')
# outputs: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

Ответы [ 2 ]

3 голосов
/ 25 сентября 2019

Это похоже на JSON, поэтому декодируйте и кодируйте его так, как вы предпочитаете?

>>> import json
>>> json.loads('{\"N\": \"Centr\\u00e1lna nervov\\u00e1 s\\u00fastava\"}')
{'N': 'Centrálna nervová sústava'}
>>> json.dumps(json.loads('{\"N\": \"Centr\\u00e1lna nervov\\u00e1 s\\u00fastava\"}'), ensure_ascii=False)
'{"N": "Centrálna nervová sústava"}'
0 голосов
/ 25 сентября 2019
trouble_string = '{\"N\": \"Centr\\u00e1lna nervov\\u00e1 s\\u00fastava\"}'
result = trouble_string.encode().decode("unicode-escape")

Цитата из документов :

unicode_escape - Создать строку, подходящую в качестве литерала Unicode в исходном коде Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...