打印包含重音字符和表情符号的Unicode字符串

时间:2016-11-16 19:38:15

标签: python utf-8 emoticons

我正在使用Python阅读包含以下行的文件

à è ì ò ù ç @ \U0001F914

其中\U0001F914是表情符号的unicode代码。

如果将字符串解释为

string=string.decode('utf-8')

我明白了:

à è ì ò ù ç @ \U0001F914

如果我解释如下:

string=string.decode('unicode-escape')

我明白了:

à è ì ò ù ç @

我该如何打印:

à è ì ò ù ç @

我是初学者,所以请原谅我,如果我的问题很愚蠢,但我无法解决。

提前致谢。

2 个答案:

答案 0 :(得分:1)

也许这不是最好的解决方案,但首先您可以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')

答案 1 :(得分:0)

\ U0001F914超出了IDLE,Tk和大多数终端的可打印范围。