在Python中查找字符串中所有出现的开始位置和结束位置

2024-06-24 12:50:02 发布

您现在位置:Python中文网/ 问答频道 /正文

如果你有一个序列:

example='abcdefabcdefabcdefg'

你在寻找:

^{pr2}$

什么函数会给你一个包含所有职位的列表?在

positions=[(0,2),(6-8),(12-14)]

我创建了一个窗口列表,将“example”拆分为3,这样它就可以从“abc”、“bcd”和“cde”中分离出来

windows=['abc', 'bcd', 'cde', 'def', 'efa', 'fab', 'abc', 'bcd', 'cde', 'def', 'efa', 'fab', 'abc', 'bcd', 'cde', 'def']

使用for循环

for i in windows:
    if i == 'abc':

这就是我被困的地方。在


Tags: 函数列表forexamplewindowsdef职位序列
3条回答

re模块提供您所需的。在

import re
print [(m.start(0), m.end(0)) for m in re.finditer('abc', 'abcdefabcdefabcdefg')]

这可以通过列表理解来优雅地表达:

positions = [(i, i + len(searching_for) - 1)
             for i in xrange(len(example))
             if example[i:].startswith(searching_for)]

请注意,在最后一个字符后面加上结束索引点通常更有用,而不是像您所要求的那样将结束索引点放在最后一个字符之后(上面的代码提供了)。在

您可以使用regular expressions;匹配对象带有位置信息attached。使用Python 2的示例:

>>> import re
>>> example = 'abcdefabcdefabcdefg'
>>> for match in re.finditer('abc', example):
        print match.start(), match.end()
0 3
6 9 
12 15

相关问题 更多 >