一种选择是仅使用正则表达式|字符尝试匹配系列中单词中的每个子字符串s(仍使用str.contains
)。
你可以通过将单词searchfor
与结合在一起来构造正则表达式|:
>>> searchfor = ['og', 'at']
>>> s[s.str.contains('|'.join(searchfor))]
0 cat
1 hat
2 dog
3 fog
dtype: object
就像@AndyHayden
在下面的注释中指出的那样,请注意你的子字符串是否具有特殊字符,例如$和^你想在字面上进行匹配的字符。这些字符在正则表达式的上下文中具有特定含义,并且会影响匹配。
你可以通过转义非字母数字字符来使子字符串列表更安全re.escape
:
>>> import re
>>> matches = ['$money', 'x^y']
>>> safe_matches = [re.escape(m) for m in matches]
>>> safe_matches
['\\$money', 'x\\^y']
与结合使用时,此新列表中带有的字符串将逐字匹配每个字符str.contains
。