gpt4 book ai didi

python - 如何在Python中查找字符串中所有出现的子字符串

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:07 25 4
gpt4 key购买 nike

我需要帮助解释我在堆栈溢出上找到的这个解决方案是如何工作的。为什么如果k=-1,需要退仓。如果我将其更改为返回其他任何内容,则它不起作用。谢谢。

def findSubstring(sequence, substring):
positions = []
k = 0
while k < len(sequence):
k = sequence.find(substring, k)
if k == -1:
return positions
else:
positions.append(k)
k += 1 #change to k += len(sub) to not search overlapping results
print(positions)

最佳答案

str.find()返回子字符串第一次出现的索引(如果找到)。如果没有找到,则返回-1。

这就是 findSubstring 中发生的情况功能:

  • 首先,创建一个空列表,以便稍后添加子字符串出现的索引。

  • while k < len(sequence) :我们要查找子字符串,直到找到序列的最后一个索引。

  • k = sequence.find(substring, k) :我们在索引 k 之后分配子字符串第一次出现的索引(对于第一次迭代应该是序列的开头,这就是在 while 语句之前设置 k=0 的原因。)

  • 现在,如果子字符串不在序列 k=-1 中以及子字符串出现的索引。

  • if k == -1: return(positions) :如果未找到子字符串,k=-1和空的positions返回列表,否则索引 k 将附加到 positionsk +=1将确保在下一次迭代中,我们从刚刚找到的索引之后开始查找子字符串。

  • 我们迭代 k 直到到达序列末尾 ( while k len(sequence) )

  • print(positions) :该函数返回索引列表,我们最后打印它。

关于python - 如何在Python中查找字符串中所有出现的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57742390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com