2

我正在使用以下内容来获取所有匹配项,包括根据其他线程上的建议重叠:

[(m.start(0), m.end(0)) for m in re.findall(t,s,overlapped = True)]

其中 t 是 s 的子集。但是,我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: findall() got an unexpected keyword argument 'overlapped.'

我做错了什么/重叠了一个过时的标志/你会怎么做?非常感谢所有帮助。

4

1 回答 1

3

正如 Cunningham 和 Klaus 所提到的,我所指的标志来自另一个不是 re 的包。

不过,我在不下载外部包的情况下找到了一个解决方案,使用前瞻:

[(m.start(0), m.end(0)) for m in re.finditer('(?='+t+')',s)]

当 s = 'GATATATGCATATACTT' 和 t = 'ATAT' 时,你得到 [(1, 1), (3, 3), (9, 9)]。我不需要返回匹配中的文本,只需要返回索引,所以它是否匹配 ['','',''] 并不重要。

于 2015-07-27T17:43:52.430 回答