我能理解为什么str.startswith()不处理正则表达式:
col1
0 country
1 Country
i.e : df.col1.str.startswith('(C|c)ountry')
它返回所有值False:
col1
0 False
1 False
答案 0 :(得分:7)
Series.str.startswith
不接受正则表达式,因为它的行为与vanilla Python中的str.startswith
类似,后者不接受正则表达式。另一种方法是使用正则表达式匹配(如in the docs所述):
df.col1.str.contains('^[Cc]ountry')
字符类[Cc]
可能是匹配C
或c
而非(C|c)
的更好方式,除非您需要捕获使用的字母。在这种情况下,您可以执行([Cc])
。
答案 1 :(得分:4)
Series.str.startswith
不接受正则表达式。请改用Series.str.match
:
df.col1.str.match(r'(C|c)ountry', as_indexer=True)
输出:
0 True
1 True
Name: col1, dtype: bool