2016-11-17 58 views
-1

我想查找推文和包含单词,短语和表情图标的字符串列表之间的匹配。这里是我的代码:Python正则表达式:找到单词和表情图标

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

我不断收到此错误:

error: unbalanced parenthesis

显然有一些错误的代码,它无法比拟的表情。任何想法如何解决它?

+2

'words'中的括号不会被转义。 – Nicarus

+0

请让我知道如何修复它@Nicarus – msmazh

+0

尝试逃离它们。 – Nicarus

回答

2

re模块具有的功能escape这需要的话正确转义的照顾,所以你可以只使用

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

注意,你期望与词使用时单词边界可能无法正常工作,唐不以真正的单词字符开始或结束。

+0

最佳解决方案。非常感谢 – msmazh

3

我试过下面,它不再扔错误:

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

虽然words拥有所有必要的格式,再使用()为特殊字符。这需要你使用\(\),以避免它们被解释为特殊字符,而是作为ASCII字符40和41。既然你不明白@Nicarus说的话,你需要使用这样的:

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

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