Pandas移除DataFrame列中稀有词报错:unterminated character set at position 0
解决正则未终止字符集错误
问题出在str.replace默认启用正则匹配模式,而你的rare_words列表里大概率包含了[、]、*这类正则元字符。这些字符会被正则引擎当成语法解析,比如单个[会被识别为字符集的起始标记,但没有对应的闭合],就会触发unterminated character set错误。
修复方法1:转义正则特殊字符
对每个稀有词做转义处理,让正则引擎把特殊字符当成普通文本看待:
import pandas as pd import regex as re for word in rare_words: # 转义所有正则元字符 escaped_word = re.escape(word) df['tweet_text'] = df['tweet_text'].str.replace(escaped_word, '', regex=True)
修复方法2:批量替换(更高效)
多次循环修改DataFrame列效率较低,可以把所有转义后的稀有词拼接成一个正则模式,一次性完成替换:
import pandas as pd import regex as re # 转义所有稀有词,用|分隔表示匹配任意一个 pattern = '|'.join(re.escape(word) for word in rare_words) # 一次性替换所有稀有词 df['tweet_text'] = df['tweet_text'].str.replace(pattern, '', regex=True)
额外提示
如果你的需求是匹配完整单词(避免替换掉包含稀有词的长单词),可以在正则模式中加上单词边界\b:
pattern = '|'.join(rf'\b{re.escape(word)}\b' for word in rare_words) df['tweet_text'] = df['tweet_text'].str.replace(pattern, '', regex=True)
内容的提问来源于stack exchange,提问作者Debbie
相关产品推荐
相关产品推荐

