我想在推文和包含单词,短语和表情符号的字符串列表中找到匹配项。这是我的代码:
words = [':)','and i','sleeping','... :)','! <3','facebook']
regex = re.compile(r'\b%s\b|(:\(|:\))+' % '\\b|\\b'.join(words), flags=re.IGNORECASE)
我一直收到这个错误:
error: unbalanced parenthesis
显然代码有问题,它无法匹配表情符号。知道怎么解决吗?
答案 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解释了一切。