问题:如何在python字符串中找到子字符串的首次出现?
因此,如果我的字符串是“花花公子很酷”。
我想找到’dude’的第一个索引:
mystring.findfirstindex('dude') # should return 4
这是什么python命令?
谢谢。
回答 0
>>> s = "the dude is a cool dude"
>>> s.find('dude')
4
回答 1
快速概述: index
和find
该find
方法旁边也有index
。find
而index
这两个产生相同的结果:返回第一个出现的位置,但如果没有找到index
将引发ValueError
,而find
回报-1
。在速度方面,两者都有相同的基准结果。
s.find(t) #returns: -1, or index where t starts in s
s.index(t) #returns: Same as find, but raises ValueError if t is not in s
其他知识: rfind
和rindex
:
在一般情况下,发现和指数收益率,其中传入的字符串开始最小的指数,并
rfind
和rindex
返回它开始大部分的字符串搜索算法进行搜索的最大索引从左到右,所以开始的功能r
表示搜索从发生右向左。
因此,如果您正在搜索的元素的可能性比列表的开始更接近结尾,rfind
或者rindex
会更快。
s.rfind(t) #returns: Same as find, but searched right to left
s.rindex(t) #returns: Same as index, but searches right to left
来源: Python:Visual快速入门指南,Toby Donaldson
回答 2
通过不使用任何python内置函数来以算法方式实现此功能。这可以实现为
def find_pos(string,word):
for i in range(len(string) - len(word)+1):
if string[i:i+len(word)] == word:
return i
return 'Not Found'
string = "the dude is a cool dude"
word = 'dude1'
print(find_pos(string,word))
# output 4
回答 3
def find_pos(chaine,x):
for i in range(len(chaine)):
if chaine[i] ==x :
return 'yes',i
return 'no'