2015-03-08 5 views
0

Я хочу преобразовать строку, которая содержит номера Unicode, в обычный текст. Например, файл «input.txt» содержит строку «\ u0057 \ u0068 \ u0061 \ u0074», и я хочу знать, что это значит. Если строка вводится в коде, как:Unicode в python 3

s = '\u0057\u0068\u0061\u0074' 
b = s.encode('utf-8') 
print(b) 

это работает отлично, но если я хочу сделать то же самое с файлом я получаю этот результат b'\\u0057\\u0068\\u0061\\u0074'.

Как исправить эту проблему? Windows 8, кодировка файлов - «windows-1251».

+1

Вы не можете ** возможно ** получить, что выход из кода вы дали. –

ответ

0

Если ваш файл содержит эти escape-последовательности unicode, вы можете использовать «кодек» unicode_escape, чтобы интерпретировать их после чтения содержимого файла в виде строки.

>>> s = r'\u0057\u0068\u0061\u0074' 
>>> print(s) 
\u0057\u0068\u0061\u0074 
>>> s.encode('utf-8').decode('unicode_escape') 
'What' 

Или, вы можете просто прочитать строку байтов непосредственно и расшифровывать, что:

with open('file.txt', 'br') as f: 
    print(f.read().decode('unicode_escape')) 
Смежные вопросы