Декодировать строку Python - PullRequest
0 голосов
/ 17 декабря 2018

Извините за общий заголовок.

Я получаю строку из внешнего источника: txt = external_func()

Я копирую / вставляю вывод различных команд, чтобы убедиться, что вы видите, чтоЯ говорю о:

In [163]: txt
Out[163]: '\\xc3\\xa0 voir\\n'

In [164]: print(txt)
\xc3\xa0 voir\n

In [165]: repr(txt)
Out[165]: "'\\\\xc3\\\\xa0 voir\\\\n'"

Я пытаюсь преобразовать этот текст в UTF-8 (?), Чтобы получить txt = "à voir\n", и я не вижу, как.

Какя могу сделать преобразования для этой переменной?

1 Ответ

0 голосов
/ 17 декабря 2018

Вы можете закодировать ваш txt в похожий на байты объект, используя метод кодирования класса str. Затем этот подобный байту объект может быть снова декодирован с помощью кодировки unicode_escape.

Теперь у вас есть строка со всеми проанализированными escape-последовательностями, но расшифрована latin-1.Вам все еще нужно кодировать его с помощью latin-1, а затем декодировать его снова с помощью utf-8.

>>> txt = '\\xc3\\xa0 voir\\n'
>>> txt.encode('utf-8').decode('unicode_escape').encode('latin-1').decode('utf-8')
'à voir\n'

Модуль codecs также имеет функцию недокументированную с именем escape_decode:

>>> import codecs
>>> codecs.escape_decode(bytes('\\xc3\\xa0 voir\\n', 'utf-8'))[0].decode('utf-8')
'à voir\n'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...