python中查找子串在字符串中所有位置的方法
时间: 2024-09-25 16:04:41 浏览: 53
在Python中,你可以使用`str.find()`、`str.index()` 或者列表推导式结合`str.startswith()`函数来查找子串在字符串中所有的位置。这里给出几个例子:
1. 使用`find()`和`while`循环:
```python
def find_all_positions(s, sub):
positions = []
start = s.find(sub)
while start != -1:
positions.append(start)
start = s.find(sub, start + 1) # 找到下一个位置,从上一个结束位置加1开始搜索
return positions
# 示例
s = "Hello, world! Hello again."
sub = "Hello"
print(find_all_positions(s, sub))
```
2. 使用`index()`:
```python
def find_all_positions_with_index(s, sub):
positions = []
for i in range(len(s)):
if s[i:].startswith(sub): # 检查从当前位置开始是否是子串
positions.append(i)
return positions
# 示例
positions = find_all_positions_with_index(s, sub)
```
3. 列表推导式:
```python
def find_all_positions_listcomp(s, sub):
return [i for i in range(len(s)) if s.startswith(sub, i)]
# 示例
positions_listcomp = find_all_positions_listcomp(s, sub)
```
阅读全文