Преобразование строки кода Python в кодировке Unicode в ее реальный символ Unicode - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть набор данных, содержащий какой-то плохо проанализированный текст, который содержит много символов Юникода (например, 'a', '{', 'Ⅷ', '♞', ...), которые были неправильно преобразованы в Юникод.

Все обратные слэши экранированы, поэтому каждая экранированная последовательность Юникода интерпретировалась как \ рядом с u вместо одного символа, \u.

Более конкретно,У меня есть строки, которые выглядят так:

>>> '\\u00e9'
'\\u00e9'

И я хочу, чтобы они выглядели так:

>>> '\u00e9'
'é'

Как преобразовать первую строку во вторую?

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Вот один из способов сделать это без импорта другого модуля.

input_string = '\\u00e9'
print(input_string.encode('latin-1').decode('unicode-escape'))
# output 
é 
0 голосов
/ 20 сентября 2019

Сначала вам нужно идентифицировать строку как шестнадцатеричную

classmethod fromhex (string) Этот метод байтового класса возвращает объект байтов, декодируя данный строковый объект.Строка должна содержать две шестнадцатеричные цифры на байт, а пробел ASCII игнорируется.https://docs.python.org/3/library/stdtypes.html#bytes.fromhex

Далее нам нужно преобразовать шестнадцатеричный код в Unicode

bytes.decode (encoding = "utf-8", errors = "strict") https://docs.python.org/3/library/stdtypes.html#bytes.decode

Так бы это выглядело примерно так

char = '\\u00e9'

print (bytes.fromhex(char)[3:-1].decode('latin-1'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...