Skip to main content
 首页 » 编程设计

python之去掉输出中的括号

2025年05月04日24shihaiming

我认为这对你来说是一个简单的问题,因为我是 python3 的初学者。 打印 fasta 文件的标题时,它包含括号。我怎样才能删除它们??

import sys 
from Bio import Entrez 
from Bio import SeqIO 
 
 
#define email for entrez login 
db           = "nuccore" 
Entrez.email = "someone@email.com" 
 
#load accessions from arguments 
if len(sys.argv[1:]) > 1: 
  accs = sys.argv[1:] 
else: #load accesions from stdin   
  accs = [ l.strip() for l in sys.stdin if l.strip() ] 
#fetch 
sys.stderr.write( "Fetching %s entries from GenBank: %s\n" % (len(accs), ", ".join(accs[:10]))) 
for i,acc in enumerate(accs): 
  try: 
    sys.stderr.write( " %9i %s          \r" % (i+1,acc))   
    handle = Entrez.efetch(db=db, rettype="fasta", id=acc) 
    seq_record = SeqIO.read(handle, "fasta") 
 
    if (len(seq_record.seq) > 0): 
      header = ">" + seq_record.description + " Len:" , len(seq_record.seq) 
      print(header) 
      print(seq_record.seq) 
  except: 
    sys.stderr.write( "Error! Cannot fetch: %s        \n" % acc) 
 
 
 ./acc2fasta.py 163345 303239 

它会回来

(">M69206.1 Bovine MHC class I AW10 mRNA (haplotype AW10), 3' end Len:", 1379) 
TCCTGCTGCTCTCGGGGGTCCTGGTCCTGACCGAGACCCGGGCTGGCTCCCACTCGATGAGGTATTTCAGCACCGCCGTGTCCCGGCCCGGCCTCGGGGAGCCCCGGTACCTGGAAGTCGGCTACGTGGACGACACGCAGTTCGTGCGGTTTGACAGCGACGCCCCGAATCCGAGGATGGAGCCGCGGGCGCGGTGGGTGGAGCAGGAGGGGCCGGAGTATTGGGATCGGGAGACGCAAAGGGCCAAGGGCAACGCACAATTTTTCCGAGTGAGCCTGAACAACCTGCGCGGCTACTACAACCAGAGCGAGGCCGGGTCTCACACCCTCCAGTGGATGTCCGGCTGCTACGTGGGGCCGGACGGGCGTCCTCCGCGCGGGTTCATGCAGTTCGGCTACGACGGCAGAGATTACCTCGCCCTGAACGAGGACCTGCGCTCCTGGACCGCGGTGGAGACGATGGCTCAGATCTCCAAACGCAAGATGGAGGCGGCCGGTGAAGCTGAGGTACAGAGGAACTACCTGGAGGGCCGGTGCGTGGAGTGGCTCCGCAGATACCTGGAGAACGGGAAGGACACGCTGCTGCGCGCAGACCCTCCAAAGGCACATGTGACCCGTCACCCGATCTCTGGTCGTGAGGTCACCCTGAGGTGCTGGGCCCTGGGCTTCTACCCTGAAGAGATCTCACTGACCTGGCAGCGCAATGGGGAGGACCAGACCCAGGACATGGAGCTTGTGGAGACCAGGCCTTCAGGGGACGGAAACTTCCAGAAGTGGGCGGCCCTGTTGGTGCCTTCTGGAGAGGAGCAGAAATACACATGCCAAGTGCAGCACGAGGGGCTTCAGGAGCCCCTCACCCTGAAATGGGAACCTCCTCAGCCCTCCTTCCTCACCATGGGCATCATTGTTGGCCTGGTTCTCCTCGTGGTCACTGGAGCTGTGGTGGCTGGAGTTGTGATCTGCATGAAGAAGCGCTCAGGTGAAAAACGAGGGACTTATATCCAGGCTTCAAGCAGTGACAGTGCCCAGGGCTCTGATGTGTCTCTCACGGTTCCTAAAGTGTGAGACACCTGCCTTCGGGGGACTGAGTGATGCTTCATCCCGCTATGTGACATCAGATCCCCGGAACCCCTTTTTCTGCAGCTGCATCTGAATGTGTCAGTGCCCCTATTCGCATAAGTAGGAGTTAGGGAGACTGGCCCACCCATGCCCACTGCTGCCCTTCCCCACTGCCGTCCCTCCCCACCCTGACCTGTGTTCTCTTCCCTGATCCACTGTCCTGTTCCAGCAGAGACGAGGCTGGACCATGTCTATCCCTGTCTTTGCTTTATATGCACTGAAAAATGATATCTTCTTTCCTTATTGAAAATAAAATCTGTC 
Error! Cannot fetch: 303239         

如何去除输出中的括号??

请您参考如下方法:

  header = ">" + seq_record.description + " Len:" , len(seq_record.seq) 
  print(header) 

这样做是在打印 tuple 的表示形式,使用逗号(预期)和括号(不需要)

最好的方法是 join 数据,因此在字符串字段之间插入逗号,但省略了 tuple 表示:

print(",".join(header)) 

在你的情况下,它有点诡计,你必须将非字符串参数转换为字符串(tuple 表示进行了转换,但 join 没有):

print(",".join([str(x) for x in header])) 

结果:

>M69206.1 Bovine MHC class I AW10 mRNA (haplotype AW10), 3' end Len:,1379