Python: обратная косая черта (\ u ...) в файлах - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть файл с символами Юникода в формате \ u. Я хочу записать их в другой файл как обычные строки Unicode. Но я не могу заставить backsla sh интерпретировать как escape-символ.

Так что у меня есть это в файле, например, \u1203\u1208\u1208 \u0074\u00E4\u0068\u0061\u006C\u00E4\u006C\u00E4, который должен распечатываться следующим образом.

>>> print("\u1203\u1208\u1208 \u0074\u00E4\u0068\u0061\u006C\u00E4\u006C\u00E4")
ሃለለ tähalälä

Но вместо этого я получаю это.

>>> with open('ti.txt') as f:
    for line in f:
        print(line)

\u1203\u1208\u1208 \u0074\u00E4\u0068\u0061\u006C\u00E4\u006C\u00E4

Я пробовал каждую комбинацию str(), repr(), encode().decode(), о которой я могу думать. Но эти обратные слеши все равно заканчиваются обратными слешами.

1 Ответ

0 голосов
/ 04 февраля 2020

Требуется встроенная unicode_escape кодировка текста .

Сначала вы должны открыть файл в двоичном режиме ('rb'), чтобы он позволял вам вызывать .decode() по данным. Тогда просто выполните line.decode('unicode_escape').

Модифицированный код:

with open('ti.txt', 'rb') as f:
    for line in f:
        print(line.decode('unicode_escape'))

В действии:

$ cat ti.txt
\u1203\u1208\u1208 \u0074\u00E4\u0068\u0061\u006C\u00E4\u006C\u00E4

$ python parse_unicode_escape.py
ሃለለ tähalälä
...