You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用str.contains排除字符串列表报错:nothing to repeat at 181436

问题原因

你遇到的error: nothing to repeat报错,根源在于str.contains()默认使用正则表达式匹配模式,而你的Filtre列表中存在带正则特殊字符的字符串(比如*、+、?、(、)这类)。当你用'|'.join(Filtre)拼接成匹配规则后,这些特殊字符会被当作正则语法解析,比如如果字符串里有单独的*或+(前面没有可重复的匹配项),就会触发"nothing to repeat"的错误。

解决方法

根据你的需求,有两种可行方案:

方案1:转义正则特殊字符

如果你需要排除包含列表中任意子串的行,先对每个字符串进行正则转义,再拼接匹配规则:

import re
# 对每个唯一值做正则转义,避免特殊字符干扰
Filtre_escaped = [re.escape(s) for s in transactions_located.titre.unique()]
# 转义后再拼接成正则匹配规则
temp = transactions.loc[~transactions['titre'].str.contains('|'.join(Filtre_escaped), case=False, na=False)]

方案2:用isin做完全匹配(更高效)

如果你实际需求是排除与列表中字符串完全相等的行,直接用isin()取反更简单高效,也不会有正则相关问题:

Filtre = list(transactions_located.titre.unique())
temp = transactions.loc[~transactions['titre'].isin(Filtre)]

内容的提问来源于stack exchange,提问作者bravopapa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:17:37