我有一个非常简单的搜索字符串。我正在寻找一家名为“Lidl”的商店。
我的数据框:
term_location amount
0 Lidl 2.28
1 Lidl 16.97
2 Lidl 2.28
3 Lidl 16.97
4 Lidl 16.97
5 Lidl 16.97
6 Lidl 16.97
7 Lidl 16.97
8 Lidl 16.97
9 Lidl 16.97
在这里,我正在搜索 Lidl 的正则表达式版本:
r = r'\blidl\b'
r = re.compile(r)
df[df.term_location.str.contains(r,re.IGNORECASE,na=False)]
这会返回一个空数据框。
但是,如果我只是将简单的字符串放入 str.contains()
中,它就会起作用,并且我会得到返回的 Lidls 的数据帧:
df[df.term_location.str.contains('lidl',case=False,na=False)]
我更希望能够使用正则表达式,因为我还有一些条件可以构建到查询中。
那么发生了什么?我想不通。
练习pd.DataFrame.from_dict()
的数据帧:
{'term_location': {0: 'Lidl',
1: 'Lidl',
2: 'Lidl',
3: 'Lidl',
4: 'Lidl',
5: 'Lidl',
6: 'Lidl',
7: 'Lidl',
8: 'Lidl',
9: 'Lidl'},
'amount': {0: 2.28,
1: 16.97,
2: 2.28,
3: 16.97,
4: 16.97,
5: 16.97,
6: 16.97,
7: 16.97,
8: 16.97,
9: 16.97}}
最佳答案
您的正则表达式不起作用,因为您试图完全匹配单词“lidl”(小写)。
您应该将单词的第一个字符更改为大写:
re.compile(r"\bLidl\b")
或使用re.IGNORECASE
标志来匹配单词,无论其大小写:
re.compile(r"\blidl\b", re.IGNORECASE)
请记住,\b
尝试匹配文本开头的单词。例如,“_Lidl”不会匹配上面的任何正则表达式。
关于python - 为什么我的正则表达式不能与 str.contains 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62956575/