我对Python比较陌生,有些事情正在起作用。基本上,当我在字符串上调用str.rfind("test")
时,输出与str.find("test")
相同。我最好向您展示一个例子:
Python 2.6.5 (r265:79063, May 6 2011, 17:25:59)
[GCC 4.5.0 20100604 [gcc-4_5-branch revision 160292]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import string
>>> line = "hello what's up"
>>> line.rfind("what")
6
>>> line.find("what")
6
根据我的理解,line.find
的值是可以的,但line.rfind
的值应为9
。我是否误解了这些功能或者没有很好地使用它们?
答案 0 :(得分:23)
我认为你期望rfind
返回"what"
的第一个/最左边匹配中最右边字符的索引。它实际上返回"what
的最后一个/ 最右边匹配中最左边字符的索引。引用the documentation:
str.rfind(sub[, start[, end]])
返回找到substring sub 的字符串中的最高索引,以便 sub 包含在
s[start:end]
中。可选参数 start 和 end 被解释为切片表示法。失败时返回-1
。
"ab c ab".find("ab")
将为0
,因为最左边的位置位于左端
"ab c ab".rfind("ab")
将为5
,因为最右边的匹配项始于该索引。
答案 1 :(得分:2)
要更好地理解.rfind
的含义,请尝试使用“hello what up up to hello what up up”这样的字符串示例(即多出一次“what”)
答案 2 :(得分:2)
find()将返回第一个匹配的索引。但是 rfind 会给你最后一次出现的模式。如果您尝试匹配重复匹配案例,将会很清楚。
查看此示例 >>> string='hey! how are you harish'
>>>string.find('h')
>>>0 #it matched for first 'h' in the string
>>> string.rfind('h')
22 #it matched for the last 'h' in the string