现在,我需要找到一种方法,让 Python 可以找到上述代码的密码子位置 5 并提取该序列直到位置 12 ( ATGG* CTTTACCTCGTC *TCACAGGAG)。所以输出应该是这样的:
>CCODE1112_5..11
CTTTACCTCGTC
我如何告诉python在第一个“_”之后获取开始值,在“..”之后获取结束值,以便它可以自动完成?? 谢谢!!!
现在,我需要找到一种方法,让 Python 可以找到上述代码的密码子位置 5 并提取该序列直到位置 12 ( ATGG* CTTTACCTCGTC *TCACAGGAG)。所以输出应该是这样的:
>CCODE1112_5..11
CTTTACCTCGTC
我如何告诉python在第一个“_”之后获取开始值,在“..”之后获取结束值,以便它可以自动完成?? 谢谢!!!
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]
我可能(叹气)使用正则表达式从 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]