python - 使用 pandas str.match 转义缺少的括号
问题描述
我在使用正则表达式时遇到问题。我正在尝试检查我的数据库是否与我正在使用的项目名称完全匹配。问题是有时数据不完整,我会得到错误。我想完全忽略正则表达式,因为此时没有必要。
例如,下面的代码返回re.error: missing ), unterminated subpattern at position 10
列表中的最后一项缺少括号。我尝试过使用if database['Item Name'].str.match(item, regex=False).any():
,但这还不够,因为这些项目的命名非常相似,我需要完美匹配。我也尝试阅读 re 模块文档,但我对它的理解不够好,无法解决这个问题。
有什么想法可以绕过这个问题吗?
database = pd.read_csv("database.csv", sep=";")
list = ["Test Name !", "Test Name (2020)", "Test name ("]
for item in list:
if database['Item Name'].str.match(item).any():
# do something
pass
else:
#do something else
pass
解决方案
如果我正确理解您的帖子,您正在尝试使用读取的数据来创建正则表达式。由于您不希望将这些视为正则表达式,因此您可以简单地使用字符串比较。
但是,如果您的应用程序需要使用正则表达式,您可以使用 re.escape() 将字符串呈现为文字,这样括号就不会变魔术。
例如:
import re
string1 = 'this is a magic ( that will break your regex'
string2 = re.escape(string1) # escapes your string
re.match(string2, "this won't cause issues")
#re.match(string1, "this will cause issues")
推荐阅读
- json - API 平台:具有嵌套实体的组仅在删除 @ApiResource 时有效
- reactjs - 如何将 react-native-web 组件发布为 npm 模块
- api - 无法使用 Gmail API 从消息中获取按钮的链接
- python - 评估 sympy.core.add.Add 一点
- flutter - 在颤动中实现 textStyle 和颜色的完美方法是什么?
- python - 密码字段不会呈现
- python - Python pycaw AudioUtilities 通过它的 PID 而不是名称来改变程序的音量
- javascript - Json 数组打印为字符串?不是数组?
- python - 使用 scrapy 抓取特定的 h1 标签
- ruby - Ruby 相当于 Python 的 hash() 是什么?