查找编码序列
cds_position = ''
cds_start = 0
cds_end = 0
cds_sequence = ''
for line in data:
cds_temp = ''
if re.findall(r' CDS ',line):
cds_temp = cds_temp + line.replace('n','')
position = re.search(r'(d+)..(d+)',cds_temp)
cds_start = cds_start + int(position.group(1))
cds_end = cds_end + int(position.group(2))
cds_position = str(cds_start)+':'+str(cds_end)
cds_sequence = cds_sequence + sequence[(cds_start-1):(cds_end-1)]
我收到此错误
Traceback (most recent call last):
File "Upstream_ORF.py", line 357, in <module>
GenBank_Reader(test_file)
File "Upstream_ORF.py", line 317, in GenBank_Reader
cds_start = cds_start + int(position.group(1))
AttributeError: 'NoneType' object has no attribute 'group'
好的,我真的不明白为什么会出现此错误。
我编写了一个脚本,该脚本逐行遍历特定格式的文件,每当遇到后跟 10 个空格的特定字符串时,它都会采用其后面的数字值
exon 1..1333
/gene="BRD2"
/gene_synonym="D6S113E; FSH; FSRG1; NAT; RING3; RNF3"
/inference="alignment:Splign:1.39.8"
/number=3
STS 350..463
/gene="BRD2"
/gene_synonym="D6S113E; FSH; FSRG1; NAT; RING3; RNF3"
/standard_name="CGCb278"
/db_xref="UniSTS:240930"
因此,每当它找到单词外显子后跟 10 个空格时,它都会取".."两侧的数字。它适用于 5 个不同的文件,但对于其中一个文件,它不起作用,并且格式完全相同。 我不确定为什么它现在有效,因为它仍然可以与其他工作。 我在文件中找到了它所说的"外显子"的所有出现,并且没有一个像我正在寻找的那样有 10 个空格。
为什么当它适用于具有相同格式的其他文件时会出现此错误?
如果re.search
返回 None
,这意味着它未能找到匹配项。有问题的文件必须具有导致表达式失败的不同内容。
关于你的代码的一些小评论:
-
if re.findall(r' CDS ',line):
是不必要的。只需执行if ' CDS ' in line:
,即可执行子字符串搜索。 - 而不是
line.replace('n','')
你应该使用line.rstrip('n')
,因为这更典型。