python - 这些字符是否具有某种映射功能?“[1]”、“[2]”、“[3]”、...、“[n]”
问题描述
我正在使用这行代码
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]
。但它不是也在过滤没有这些元素的行。有一些模式它虽然。它将过滤掉具有“字符”数字的行,我的意思是£55, 2010), 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)
推荐阅读
- python - 为什么文件路径在实际上完全有效时变得无效?
- reactjs - 基于动态条件的 ag-grid 单元格样式
- java - 如何在springboot的requestbody中将单个实体映射到两个不同的节点
- html - 如何将“当前”类添加到导航菜单
- 在单页网站中使用 javascript.in?
- python-3.x - Pandas 转换时间序列 15 分钟数据
- r - 根据事件保留值
- lightgbm - ML.NET LightGbm 重新训练(追加新的训练数据)
- python-3.x - 如何在 AWS lambda 中使用 psycopg2?
- sqlalchemy - 与 Marshmallow 的关系非常慢的序列化
- python - 指定从 Discord 在 Google 表格中写入数据时要使用的工作表名称