1

所以我正在解决一个问题,我必须在遇到初始字符串后找到各种重复的字符串,比如我们采用 ACTGAC,因此数据文件的序列如下所示:

AAACTGACACCATCGATCAGAACCTGA

因此,在该字符串中,一旦我们找到 ACTGAC,我就需要分析接下来的 10 个字符是否符合某些规则的字符串重复。我已经编码了规则,但是任何人都可以告诉我,一旦我找到了我需要的字符串,我就可以为接下来的十个字符创建一个子字符串来分析。我知道 str.partition 函数可以在找到字符串后执行此操作,然后 [1:10] 可以获取接下来的十个字符。

谢谢!

4

2 回答 2

4

您几乎已经拥有它(但请注意,索引在 Python 中从零开始计数)。

该方法将根据第一次出现的partition将字符串拆分为。head, separator, tailseparator

因此,您只需要截取 的前十个字符tail

>>> data = 'AAACTGACACCATCGATCAGAACCTGA'
>>> head, sep, tail = data.partition('ACTGAC')
>>> tail[:10]
'ACCATCGATC'

Python 允许您省略切片中的起始索引(默认为零 - 字符串的开头),以及结束索引(默认为字符串的长度)。

请注意,您也可以在一行中完成整个操作,如下所示:

>>> data.partition('ACTGAC')[2][:10]
'ACCATCGATC'
于 2012-01-11T02:04:45.127 回答
0

因此,基于 marcog 在Find all occurrences of a substring in Python 中的回答,我建议:

>>> import re
>>> data = 'AAACTGACACCATCGATCAGAACCTGAACTGACTGACAAA'
>>> sep = 'ACTGAC'
>>> [data[m.start()+len(sep):][:10] for m in re.finditer('(?=%s)'%sep, data)]
['ACCATCGATC', 'TGACAAA', 'AAA']
于 2012-04-10T12:01:02.110 回答