比较两个pandas DataFrame做词数匹配时报正则括号不平衡错如何解决?
报错原因与解决方案
报错产生原因
这个是正则表达式语法错误,错误原因是你从frequentList中提取的unique_words列表里包含正则元字符,比如(、)、*、+、|等在正则中有特殊作用的符号。如果其中某个单词带有未配对的括号,拼接成正则模式后就会破坏整体语法,触发括号不匹配的报错。
你手动赋值的['word1', 'word2', 'word3']都不包含正则特殊字符,所以运行正常。
解决方法
在拼接正则模式前,对每个单词做正则元字符转义,使用re.escape()方法即可自动把所有特殊字符转为普通字符,不影响正常匹配。
修改后的代码如下:
import re unique_words = frequentList['unique_values'].tolist() # 逐个转义单词的正则特殊字符后再拼接模式 pattern = r'\b{}\b'.format('|'.join(re.escape(word) for word in unique_words)) fulltext['count'] = fulltext['text_value'].str.count(pattern)
补充说明
如果你的单词存在非字母/数字开头/结尾的情况,\b单词边界可能不符合预期的匹配逻辑,可以根据实际业务场景调整边界规则,比如替换为匹配字符串首尾、前后空格等规则。
内容的提问来源于stack exchange,提问作者user3685818
相关产品推荐
相关产品推荐

