Python正则表达式:找到单词和表情符号

时间:2016-11-17 01:17:57

标签: python regex emoticons

我想在推文和包含单词,短语和表情符号的字符串列表中找到匹配项。这是我的代码:

words = [':)','and i','sleeping','... :)','! <3','facebook'] regex = re.compile(r'\b%s\b|(:\(|:\))+' % '\\b|\\b'.join(words), flags=re.IGNORECASE)

我一直收到这个错误:

error: unbalanced parenthesis

显然代码有问题,它无法匹配表情符号。知道怎么解决吗?

3 个答案:

答案 0 :(得分:3)

我尝试了以下内容并停止抛出错误:

words = [':\)','and i','sleeping','... :\)','! <3','facebook']

答案 1 :(得分:2)

re模块有一个函数escape,负责正确转义单词,所以你可以使用

words = map(re.escape, [':)','and i','sleeping','... :)','! <3','facebook'])

请注意,与不使用实际字词开头或结尾的单词一起使用时,单词边界可能无法正常工作。

答案 2 :(得分:1)

虽然words具有所有必要的格式,但请重新使用()作为特殊字符。这要求您使用\(\)来避免将它们解释为特殊字符,而是将其解释为ASCII字符40和41.因为您不了解@Nicarus所说的内容,所以需要使用这个:

words = [':\)','and i','sleeping','... :\)','! <3','facebook']

注意:我只是拼写出来,因为对于所有可能想批评这一点的人来说,这似乎不是学校作业。另外,在进入堆栈溢出之前查看文档。 This解释了一切。