Вывести строку Unicode, содержащую как акцентированные символы, так и смайлики
Я читаю файл с Python, который содержит в точности следующую строку
à è ì ò ù ç @ \U0001F914
где \U0001F914
код Unicode для смайлика
если интерпретировать строку как
string=string.decode('utf-8')
Я получил:
à è ì ò ù ç @ \U0001F914
в то время как если я интерпретирую как следующее:
string=string.decode('unicode-escape')
Я получил:
à è ì ò ù ç @
Как я могу напечатать вместо этого:
à è ì ò ù ç @
Я новичок, так что извините, если мой вопрос глуп, но я не могу выкинуть его.
Заранее спасибо.
2 ответа
Может быть, это не лучшее решение, но сначала вы можете использовать encode
с 'unicode-escape'
вместо decode
и вы получите
data = 'à è ì ò ù ç @ \U0001F914'
print data.encode('unicode-escape')
\xe0 \xe8 \xec \xf2 \xf9 \xe7 @ \\U0001F914
тогда вы должны заменить \\
с \
- в Python вам понадобится \\\\
а также \\
data = 'à è ì ò ù ç @ \U0001F914'
print data.encode('unicode-escape').replace('\\\\', '\\')
\xe0 \xe8 \xec \xf2 \xf9 \xe7 @ \U0001F914
и тогда вы можете использовать свой decode
с 'unicode-escape'
data = 'à è ì ò ù ç @ \U0001F914'
print data.encode('unicode-escape').replace('\\\\', '\\').decode('unicode-escape')
à è ì ò ù ç @
РЕДАКТИРОВАТЬ:
Кажется, вы должны добавить .decode('utf-8')
в начале
#-*- coding: utf-8 -*-
data = 'à è ì ò ù ç @ \U0001F914'.decode('utf-8')
result = data.encode('unicode-escape').replace('\\\\', '\\').decode('unicode-escape')
print result #.encode('utf-8')
\U0001F914 находится за пределами диапазона печати для IDLE, Tk и большинства терминалов.