我试图弄清楚Python中的字符串问题。 所以这是来自在线课程Building A Search Engine,在测验中有一个问题:
对于任何字符串s = '<any string>'
,以下哪项始终具有值0?
s.find(s)
s.find('s')
's'.find('s')
s.find('')
s.find(s+'!!!')+1
答案:(a),(c),(d)&amp; (e)中
我非常确定除了选择(d)之外的其他选择。
我认为输出应为-1
,但输出为0
。
所以我的推理如下:
s
之前是预定义的问题,但''
应被视为空字符串。所以在一个字符串中找到一个空字符串,为什么返回不是-1
,因为你在任何字符串中找不到空。
============================================== < / p>
好的,我可以看到我错误的想法。
空字符串始终被视为任何其他字符串的子字符串,因此&#34;&#34; in&#34; abc&#34;将返回
True
。
答案 0 :(得分:2)
正如string.find(s, sub[, start[, end]])
文件所说:
返回
s
中找到子字符串sub
的最低索引,以便sub
完全包含s[start:end]
。
Python解释器执行搜索的方式是从字符串的start
索引中查找子字符串,直到end
索引。
它迭代并将您的子字符串比较为:
your_string[i:i+len(substring)]
# where `i` is the index
对于您的情况,您的子字符串长度为0
,并且在结尾处使用0
索引进行字符串切片时,它返回空字符串。例如:
>>> your_string = 'abcd'
>>> your_string[0:0]
''
因此,当您使用空字符串执行str.find
时,您得到的结果为0
>>> your_string.find('')
0
# Because your_string[0:0] == ''
# ^ this being the index returned