Python 这些字符是否具有某种映射功能&引用;[1] ",&引用;[2] ",&引用;[3] ",",&引用;[n] ";
我正在使用这行代码Python 这些字符是否具有某种映射功能&引用;[1] ",&引用;[2] ",&引用;[3] ",",&引用;[n] ";,python,pandas,filter,character,Python,Pandas,Filter,Character,我正在使用这行代码 df_mask = ~df[new_col_titles[:1]].apply(lambda x : x.str.contains('|'.join(filter_list), flags=re.IGNORECASE)).any(1) 为我的df创建一个掩码。筛选列表为 filter_list = ["[1]", "[2]", "[3]", "[4]", "[5]", &qu
df_mask = ~df[new_col_titles[:1]].apply(lambda x : x.str.contains('|'.join(filter_list), flags=re.IGNORECASE)).any(1)
为我的df创建一个掩码。筛选列表为
filter_list = ["[1]", "[2]", "[3]", "[4]", "[5]", "[6]", "[7]", "[8]","[9]",..."[n]"]
但是我得到了奇怪的结果,我希望它只是过滤df第0列中的行,这些行中有[1]…[n]
。但它并没有,它也在过滤没有这些元素的行。尽管如此,它还是有一种模式。它将过滤掉带有“字符”的数字行,我的意思是552010),55*,55*
有人能解释发生了什么以及是否有解决方法吗?如果要精确匹配筛选器列表中的项目,请使用
re.escape()
对特殊字符进行转义[1]
是一个正则表达式,它只匹配数字1
,而不是字符串[1]
df_mask = ~df[new_col_titles[:1]].apply(lambda x : x.str.contains('|'.join(re.escape(f) for f in filter_list), flags=re.IGNORECASE)).any(1)
看很难想象发生了什么。您能提供示例输入和预期输出吗<代码>[]在正则表达式中具有特殊意义。如果要逐字匹配,则需要将其转义。
[1]
匹配数字1
,但与方括号不匹配。