pandas.Series.str.contains
和pandas.Series.str.match
有什么区别?为什么会出现以下情况?
s1 = pd.Series(['house and parrot'])
s1.str.contains(r"bparrotb", case=False)
我得到了True
,但是当我这样做时
s1.str.match(r"bparrotb", case=False)
我得到了False
.为什么会这样呢?
str.contains()
的文档指出:
测试模式或正则表达式是否包含在系列或 指数。
str.match()
的文档指出:
确定每个字符串是否与正则表达式匹配。
这两种方法的区别在于str.contains()
使用:re.search
,而str.match()
使用re.match
。
根据re.match()
的文件
如果字符串开头的零个或多个字符与 正则表达式模式,返回相应的 match 对象。 如果字符串与模式不匹配,则返回 None;请注意,这 与零长度匹配不同。
因此parrot
与字符串的第一个字符不匹配,因此表达式返回 False。House
确实匹配第一个字符,因此它会找到house
并返回 true。