python - 接收 NameError - 如何修复?
问题描述
我正在做一个项目,但我编写的以下代码存在问题nano
:
from Bio import SeqIO
import sys
import re
fasta_file = (sys.argv[1])
for myfile in SeqIO.parse(fasta_file, "fasta"):
if len(myfile) > 250:
gene_id = myfile.id
list = re.match('H149xcV\_\w+\_\w+\_\w+', gene_id)
print (">"+list.group(1))
这是我在执行命令时收到的错误command-line
:
File "mpo.py", line 7, in <module>
gene_id = myfile.id
NameError: name 'myfile' is not defined
我有一个格式为 fasta 的文件
>H149xcV_Fge342_r3_h2_d1 len=210 path=[0:0-206]
ACTATACATGAGGAGAACATAGAACAAAAATGGGACCATAGATATATAACAATAGAAGATATAGAGAACACAATAGACAACTTATTAGGAAAGAGGTGTGTCGTCATGGAGCTGATGTTCGAGGATACTTTGCATGGTCATTCTTGGATAATTTTGAGTGGGCTATGGGATACACCAAGAGGTTTGGCATTGTTTATGTTGATTATAAGAACGGGC
>H149xcV_ytR1oP_r3_h2_d1 len=306 path=[0:0-207]
ATTAGAGTCTGAGAGAGTCTTGATTTGTCGTCGTCGAGAAATATAGGAGATCTGATTAGAGGAGAGAGCGGCCTAGGCGATGCGCGATATAGCGCTATATAGGCCTAGAGGAGAGTCTCTCTCTTTTAGAAGAGATAATATATATATATATATGGCTCTCCGGCGGGGCCGCGCGAGAGCTCGATCGATCGATATTAGCTGTACGATGCTAGCTAGCTTATATTCGATCGATTATAGCTTAGATCTCTCTCTAAAGGTCGATATCGCTTATGCGCGCGTATATCG
我想重新格式化我的文件,以便它只为我提供唯一的基因 ID,并且只输出长度大于 250 bp 的那些基因 ID。
我希望我想要的输出看起来像这样:
>H149xcV_Fge342_r3_h2
>H149xcV_ytR1oP_r3_h2
>H149xcV_DPN78333_r3_h2
>H149xcV_AgV472_r3_h2
>H149xcV_DNP733_r3_h2
解决方案
正如您的问题后面的评论中所建议的,要匹配的参数应该是一个字符串。我要补充的一件事是 python3 有一个用于正则表达式的 r"" 字符串分隔符。你的代码变成了这样:
from Bio import SeqIO
import sys
import re
fasta_file = (sys.argv[1])
for myfile in SeqIO.parse(fasta_file, "fasta"):
if len(myfile) > 250:
gene_id = myfile.id
list = re.match(r"H149xcV_\w+_\w+_\w+", gene_id)
print (">"+list.group(0))
下划线 _ 不是一个特殊的正则表达式字符(我记得)所以它不需要被转义。
该match()
函数采用正则表达式和您正在搜索的字符串(所以我添加了gene_id)。最后,您要输出group(0)
. group(0) 表示整个匹配。group(1) 来自第一个捕获括号(你没有),所以坚持使用 group(0)。
推荐阅读
- angular - Angular: Async requests using Observables. Wait to fully fetch
- firebase - 减少 AppEngine 流量分配时 Cron 作业中断
- xml - 使用 perl LibXML Element->getAttribute() 而不在值中扩展 unicode 实体
- python - increment variable for each group
- java - Increase visibility of interface
- bash - 通过重命名移动 GCS 下的文件
- php - 为什么它在 PHP 中的条带 API 上返回 null?
- protractor - 尝试确定元素是否存在时,我的量角器测试挂起
- c# - 我如何能够使用 SQL 代码在 C# 中存储信息
- google-cloud-functions - 谷歌功能部署错误,服务帐户不存在