Python - 阅读表情符号Unicode字符

And*_*ise 9 python unicode python-2.7 emoji

我有一个Python 2.7程序,它从SQLite数据库中读取iOS文本消息.文本消息是unicode字符串.在以下文字信息中:

u'that\u2019s \U0001f63b'
Run Code Online (Sandbox Code Playgroud)

撇号由表示\u2019,但表情符号由表示\U0001f63b.我查找了有问题的表情符号的代码点,就是这样\uf63b.我不确定它的0001来源.我对字符编码很少了解.

当我逐个字符地打印文本时,使用:

s = u'that\u2019s \U0001f63b'

for c in s:
    print c.encode('unicode_escape')
Run Code Online (Sandbox Code Playgroud)

该程序产生以下输出:

t
h
a
t
\u2019
s

\ud83d
\ude3b
Run Code Online (Sandbox Code Playgroud)

如何在Python中正确读取这些最后的字符?我在这里正确使用编码吗?我是否应该0001在阅读之前尝试将其丢弃,或者是否有更容易,更不傻的方式?

pvg*_*pvg 18

我不认为你正确使用编码,也不需要.你拥有的是一个有效的unicode字符串,其中包含一个4位和一个8位数的转义序列.在OS X上的REPL中尝试这个

>>> s = u'that\u2019s \U0001f63b'
>>> print s
that’s 
Run Code Online (Sandbox Code Playgroud)

在python3中,尽管 -

Python 3.4.3 (default, Jul  7 2015, 15:40:07) 
>>> s  = u'that\u2019s \U0001f63b'
>>> s[-1]
''
Run Code Online (Sandbox Code Playgroud)

  • @alaprise另一个答案有一些很好的信息,其摘要是'如果可能的话移动到Python3'.否则你进入一个痛苦/代理对/你不想知道的单词世界,因为他们是克苏鲁的歌 (2认同)