我在Python 2中工作,我有一个包含emojis以及其他unicode字符的字符串.我需要将其转换为列表,其中列表中的每个条目都是单个字符/表情符号.
x = u'xyz'
char_list = [c for c in x]
Run Code Online (Sandbox Code Playgroud)
所需的输出是:
['', '', 'x', 'y', 'z', '', '']
Run Code Online (Sandbox Code Playgroud)
实际输出是:
[u'\ud83d', u'\ude18', u'\ud83d', u'\ude18', u'x', u'y', u'z', u'\ud83d', u'\ude0a', u'\ud83d', u'\ude0a']
Run Code Online (Sandbox Code Playgroud)
如何实现所需的输出?
我试图从unicode tweet文本中删除表情符号,并使用python 2.7打印出结果
myre = re.compile(u'[\u1F300-\u1F5FF\u1F600-\u1F64F\u1F680-\u1F6FF\u2600-\u26FF\u2700-\u27BF]+',re.UNICODE)
print myre.sub('', text)
Run Code Online (Sandbox Code Playgroud)
但似乎几乎所有的字符都从文本中删除.我从其他帖子中查了几个答案,不幸的是,这些都没有在这里工作.我在re.compile()中做错了吗?
这是一个删除所有字符的示例输出:
“ ' //./” ! # # # …
Run Code Online (Sandbox Code Playgroud) 在Python 2.7中:
In [2]: utf8_str = '\xf0\x9f\x91\x8d'
In [3]: print(utf8_str)
In [4]: unicode_str = utf8_str.decode('utf-8')
In [5]: print(unicode_str)
In [6]: unicode_str
Out[6]: u'\U0001f44d'
In [7]: len(unicode_str)
Out[7]: 2
Run Code Online (Sandbox Code Playgroud)
由于unicode_str
只包含一个unicode代码点(0x0001f44d),为什么len(unicode_str)
返回2而不是1?