所以我正在尝试编写一个脚本来读取文件并在找到某个单词后提取 2 个值。在这种情况下,当遇到字符串 'exon' 时,它将保存后面的两个整数。
我从创建空字符串开始:
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
对于不包含 'exon' 的行和确实包含 'exon' 的行,我得到了一堆 [] 他们给了我 'exon' 。所以我知道我可以使用 re.findall() 功能来查找每个字符串中每次出现的“外显子”
我只需要确切地找出当它找到“外显子”时我该怎么说,它需要在该行中查找直到找到“..”,然后将其侧翼的整数附加到相应的列表中;IE
exon_start = [1,518]
exon_end = [35,2106]