我想在Python 3中找到表情符号,我打印的字符串是\ud83d\ude0a
我可以找到它
re.compile(r'(\\ud83d\\ude0a)')
但是当我想使用Square Brackets找到类似\ud83d[\ude00-\ude4f]
的时候
我写这个re.compile(r'(\\ud83d([\\ude00-\\ude4f]))');
但只是在ude0a
中映射\ud83d\ude0a
。
我的整个代码
str = '\\ud83d\\ude0a'
print(str)
emoji_pattern = re.compile(r'(\\ud83d([\\ude00-\\ude4f]))');
# emoji_pattern = re.compile(r'(\\ud83d\\ude0a)');
print(emoji_pattern.sub(r'', str))
答案 0 :(得分:1)
问题在于您使用方括号的方式
方括号用于从括号中的字符中选择单个字符。因此,当您编写[\\ude00-\\ude4f]
时,它将被转换为仅有一个字符(例如,\\
,u
,d
,0
等。),而不是你想要的那样,从\ud83d\ude00
到\ud83d\ude4f
。
要解决此问题,请尝试使用(\\ud83d(\\ude[0-4][0-9a-f]))
。它会找到字符\ud83d\ude
的序列,然后在0
到4
的范围内找到char,然后在0
到9
的序列中找到一个或a
到f
。结果,这将检测所需的序列,并且可以检查here。