-2

现在,我需要找到一种方法,让 Python 可以找到上述代码的密码子位置 5 并提取该序列直到位置 12 ( ATGG* CTTTACCTCGTC *TCACAGGAG)。所以输出应该是这样的:

>CCODE1112_5..11
 CTTTACCTCGTC

我如何告诉python在第一个“_”之后获取开始值,在“..”之后获取结束值,以便它可以自动完成?? 谢谢!!!

4

2 回答 2

0
def extractseq( queryseq , begin=5, end =12):
   queryseq=queryseq.split('\n')#transform the string in a list of lines included in the string

   return queryseq[1][begin-1:end-1]

我认为这个函数应该可以工作,注意在 python 中从 0 开始的索引

在你的脚本中写完之后,你只需要调用函数 subs=extractseq(seq,5,12)

好的,抱歉,如果您想提取子字符串中包含的 5 和 12,一种简单的方法是:

substring=queryseq.split('\n')[0].split('_')[1].split('...')#extraction of the substring
begin=substring[0]
end = substring[1]
于 2012-04-26T17:52:57.517 回答
0

我可能(叹气)使用正则表达式从 CCODE1112_5..12_ABC 中提取 5 和 12。

然后将提取的字符串转换为int。

然后在 DNA 数据的字符串切片中使用 int 作为索引。

对于正则表达式:

regex = re.compile(r'^[^ ]* (\d+)..(\d+)_.*$') regex.match('CCODE1112_5..12_ABC') match = regex.match('CCODE1112_5.. 12_ABC') match.group(1) '5' match.group(2) '12'

例如,要将它们转换为 int,请使用 int(match.group(1))。

那么你的索引是基于 1 的,而 python 是基于 0 的。此外,python 切片的起点是您想要的值,python 切片的终点是您想要的值的一个以上。因此,从 group(1) 中减去一个并保留 group(2)。

所以像: substring = dna_data[left_point-1:right_point]

于 2012-04-26T18:02:17.813 回答