【问题标题】:re.search() & group not working in file with identical format to one that works. Pythonre.search() & group 不在文件中工作,文件格式与工作文件格式相同。 Python
【发布时间】:2012-09-25 00:25:45
【问题描述】:

寻找编码序列

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"

因此,每当它找到单词 exon 后跟 10 个空格时,它就会使用 '..' 两侧的数字 它适用于 5 个不同的文件,但对于其中一个文件,它不起作用,而且格式完全相同。我不确定为什么它现在可以工作,因为它仍然可以与其他人一起工作。我在文件中发现了所有出现的“外显子”,但没有一个像我要找的那样被 10 个空格隔开。

为什么当它适用于具有相同格式的其他文件时会出现此错误?

【问题讨论】:

  • 发布不起作用的文件。它有些不同。

标签: python function error-handling module indexing


【解决方案1】:

如果re.search 返回None,则表示找不到匹配项。有问题的文件必须有一些不同的地方,这会导致表达式失败。

几个关于你的代码的小知识:

  • if re.findall(r' CDS ',line): 是不必要的。只需执行if ' CDS ' in line:,它会进行子字符串搜索。
  • 您应该使用line.rstrip('\n') 而不是line.replace('\n',''),因为这更典型。

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 2013-06-28
    • 2018-03-21
    • 2018-04-27
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多