import re
b="united thats weak. See ya "
print b.decode('utf-8') #output: u'united thats weak. See ya U0001f44b'
print re.findall(r'[U0001f600-U0001f650]',b.decode('utf-8'),flags=re.U) # output: [u'S']
如何获取输出U0001f44b
.请帮忙
我需要处理的表情符号是"❤️">
搜索 unicode 范围与搜索任何类型的字符范围完全相同。但是,您需要正确表示字符串。这是一个工作示例:
#coding: utf-8
import re
b=u"united thats weak. See ya "
assert re.findall(u'[U0001f600-U0001f650]',b) == [u' ']
assert re.findall(ur'[ - ]',b) == [u' ']
笔记:
- 您需要在程序的第一行或第二行上
#coding: utf-8
或类似内容。 - 在您的示例中,您使用的表情符号 U-1f44b 不在 U-1f600 到 U-1f650 范围内。在我的示例中,我使用了一个。
- 如果要使用
U
包含 unicode 字符,则不能使用原始字符串前缀 (r''
)。 - 但是,如果您使用字符本身(而不是
U
转义),则可以使用原始字符串前缀。 - 您需要确保模式和输入字符串都是 unicode 字符串。它们都不能是 UTF8 编码的字符串。
- 但是你不需要
re.U
标志,除非你的模式包含s
、w
或类似的东西。