所以我想写一个脚本,读取一个文件,并提取2个值,一旦发现某个单词。在这种情况下,当遇到字符串'exon'时,它会保存后面的两个整数。在字符串列表中,在字符串中查找一个短语并将两个整数(x..y)以字符串形式附加到列表中。 Python
我开始通过创建空字符串:
exon_start = []
exon_end = []
这里是我使用简化数据的一个示例:
for line in data:
print data
>>>
exon 1..35
/gene="CDKN1A"
CDS 73..567
/translation="MSEPAGDVRQNPCGSKACRRLFGPVDSEQLSRDCDALMAGCIQE
ARERWNFDFVTETPLEGDFAWERVRGLGLPKLYLPTGPRRGRDELGGGRRPGTSPALL
QGTAEEDHVDLSLSCTLVPRSGEQAEGSPGGPGDSQGRKRRQTSMTDFYHSKRRLIFS
KRKP"
misc_feature 76..78
/gene="CDKN1A"
exon 518..2106
/gene="CDKN1A"
我尝试导入的正则表达式模块用于re.findall()功能:
indx_exon = range(0,len(data))
# so this relates each line of the data to a specific number in the index
我无法识别每个人中的'外显子'短语双线 第一我只是试图找出其中的文本行有外显子序列,看是否re.findall()在工作,我把:
for p,line in zip(indx_line,data):
if re.findall(r'exon',line) is True:
print p
和我无
当我放:
for p,line in zip(indx_line,data):
exon_test = re.findall(r'exon',line)
print exon_test
我有一大堆的[]对于不包含“外显子” 的线条和线条的确实包含“外显子”他们给了我“外显子”。所以我知道我可以使用re.findall()功能来查找每个字符串中'外显子'的每个出现次数
我只需要找出我究竟该如何发现“外显子”它需要查找该行,直到找到“..”,然后将其侧面的整数附加到其相应的列表中;即
exon_start = [1,518]
exon_end = [35,2106]
@TimPietzcker啊,是的,你是绝对正确的。除非“exon”是他的简单例子,否则不需要're'。 –
雅它的工作,但我怎么追加侧面的'..'在每一行的值? –
@ draconisthe0ry您可以简单地使用'split()'来解析它,就像我刚刚在更新后的答案中所示。 –