【发布时间】:2020-11-23 18:01:22
【问题描述】:
我正在处理一个项目,但我在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
【问题讨论】:
-
您的正则表达式是否需要双引号?
re.match("H149xcV\_\w+\_\w+\_\w+") -
re.match将字符串作为参数。 它(不是 Python 解析器)将其解析为正则表达式。 -
@rhavelka 我试过这样做,但后来收到这个 TypeError: match() missing 1 required positional argument: 'string'
-
@chepner 那么我需要使用 re.search 吗?
-
@AlphaQueUp 看着docs 你需要一个模式和一个字符串。所以你需要像
re.match(""H149xcV\_\w+\_\w+\_\w+", myFile)这样的东西
标签: python regex shell bioinformatics fasta