str.startswith使用正则表达式

时间:2016-08-24 16:53:05

标签: regex pandas series

我能理解为什么str.startswith()不处理正则表达式:

   col1
0  country
1  Country

i.e : df.col1.str.startswith('(C|c)ountry')

它返回所有值False:

   col1
0  False
1  False

2 个答案:

答案 0 :(得分:7)

Series.str.startswith不接受正则表达式,因为它的行为与vanilla Python中的str.startswith类似,后者不接受正则表达式。另一种方法是使用正则表达式匹配(如in the docs所述):

df.col1.str.contains('^[Cc]ountry')

字符类[Cc]可能是匹配Cc而非(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