str.startswith使用正则表达式

K. *_*ama 2 regex series pandas

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

   col1
0  country
1  Country

i.e : df.col1.str.startswith('(C|c)ountry')
Run Code Online (Sandbox Code Playgroud)

它返回所有值False:

   col1
0  False
1  False
Run Code Online (Sandbox Code Playgroud)

Mad*_*ist 10

Series.str.startswith不接受正则表达式,因为它的行为类似于str.startswithvanilla Python,它不接受正则表达式.另一种方法是使用正则表达式匹配(如文档中所述):

df.col1.str.contains('^[Cc]ountry')
Run Code Online (Sandbox Code Playgroud)

字符类[Cc]可能是一个更好的方式来满足Cc超过(C|c),除非你当然需要捕获使用哪个字母.在这种情况下,你可以做到([Cc]).

  • 文档的链接不会跳转到相关部分:https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html#testing-for-strings-that-match-or-contain-a -图案 (2认同)

Alb*_*oso 5

Series.str.startswith不接受正则表达式。使用Series.str.match来代替:

df.col1.str.match(r'(C|c)ountry', as_indexer=True)
Run Code Online (Sandbox Code Playgroud)

输出:

df.col1.str.match(r'(C|c)ountry', as_indexer=True)
Run Code Online (Sandbox Code Playgroud)