Python 2.7 获得适当长度的表情符号

Python 2.7 获得适当长度的表情符号,python-2.7,unicode,utf-8,Python 2.7,Unicode,Utf 8,我注意到,当你在手机短信中输入表情符号时,其中一些符号使用1个字符,而另一些符号使用2个字符。例如,”♊" 取1个字符,但“读取: 一个整数,给出最大Unicode代码点的值,即。 1114111(0x10FFFF十六进制格式) 在版本3.3中更改:之前,sys.maxunicode用于 可以是0xFFFF或0x10FFFF,具体取决于配置 选项,该选项指定是否将Unicode字符存储为 UCS-2或UCS-4 以下脚本应适用于Python版本2和3: #编码=utf-8 来自未来导入打印功能

我注意到,当你在手机短信中输入表情符号时,其中一些符号使用1个字符,而另一些符号使用2个字符。例如,”♊" 取1个字符,但“读取:

一个整数,给出最大Unicode代码点的值,即。
1114111
0x10FFFF
十六进制格式)

在版本3.3中更改:之前,
sys.maxunicode
用于 可以是
0xFFFF
0x10FFFF
,具体取决于配置 选项,该选项指定是否将Unicode字符存储为
UCS-2
UCS-4

以下脚本应适用于Python版本2和3:

#编码=utf-8
来自未来导入打印功能
导入系统、平台、Unicode数据
打印(platform.python_version(),'maxunicode',十六进制(sys.maxunicode))
tab='\t'

unistr=u'\u264a\U0001f601'####unistr=u'♊ 相关:。尝试像导入Unicode数据这样的操作;unistr=u'♊感谢您的回复这是您建议的结果:
\u264a\U0001f601 u'\u264a\U0001f601'21\u264a u'\u264a'所以双子座1\U0001f601 u'\U0001f601'Cn私人使用
,您可以看到它仍然将每个表情符号读为一个字符。我确实发现了堆栈问题,但我仍在尝试使代理项工作。在我的终端上,
\U0001f601
被转换为
for…
循环中的代理项对,作为
♊我在python2.7和python3.5中检查了您的代码,得到了两个字符的相同结果。有趣的是,我们有不同的终端结果。这是因为
import sys;打印十六进制(sys.maxunicode)
在my
py-2中返回
'0xffff'
,在my
py-3中返回
'0x10ffff'
。Python3为
len('s)返回1