python 查找所有子串位置

一. 方法1

python 字符串中的find只能返回第一次出现的位置,可以利用find找出多有子串出现的位置:

def find_all(sub,s):
	index_list = []
	index = s.find(sub)
	while index != -1:
		index_list.append(index)
		index = s.find(sub,index+1)
	
	if len(index_list) > 0:
		return index_list
	else:
		return -1

二. 方法2

使用re包来实现,直接通过循环来实现,然后返回找到的pattern的起始位置和终止位置。

import re
string = 'You said I was your life. Are you still alive when you lost it?'
pattern = 'you'
for m in re.finditer(pattern, string):
    print(m.start(), m.end()) 

三. 补充

1、str.find()函数:检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1

str.find(substring, beg=0, end=len(string))

2、str.index()函数:跟find()方法一样,只不过如果str不在 string中会报一个异常

str.index(substring, beg=0, end=len(string))

你可能感兴趣的:(Python,python)