Formatting 在Biopython:你能‘;打印’;因此,长输出将被格式化为多行,每行具有最大字符长度,这在FASTA格式中经常可以看到?

Formatting 在Biopython:你能‘;打印’;因此,长输出将被格式化为多行,每行具有最大字符长度,这在FASTA格式中经常可以看到?,formatting,biopython,Formatting,Biopython,我一直试图从genbank文件中获取信息,并使用下面我修改的xbello代码打印出轨迹标记和翻译 from Bio import SeqIO for rec in SeqIO.parse("file.gb", "genbank"): if rec.features: for feature in rec.features: if feature.type == "CDS" and feature.qualifiers.has_key('transla

我一直试图从genbank文件中获取信息,并使用下面我修改的xbello代码打印出轨迹标记和翻译

from Bio import SeqIO

for rec in SeqIO.parse("file.gb", "genbank"):
    if rec.features:
       for feature in rec.features:
           if feature.type == "CDS" and feature.qualifiers.has_key('translation'):
               print '>'+feature.qualifiers['locus_tag'][0]
               print feature.qualifiers['translation'][0]
但它可以将每个翻译序列打印为非常长的行(我假设python允许的最大字符长度), 我想知道是否可以将其设置为一行大约60个字符的多行段落格式,这就是您经常在.faa文件中看到的

我试过
print(textwrap.fill(feature.qualifiers['translation'],width=60))
print(textwrap.wrap(feature.qualifiers['translation'],width=60))

到目前为止,这还不起作用,我已经试过了
X=feature.qualifiers['translation']
并进行
打印(textwrap.fill(X,宽度=60))

但毫不奇怪,电脑不知道我要它做什么… 我不确定还有什么其他格式命令可以用于打印而不是
Xout.write
,我有一种强烈的感觉,我写这篇文章时没有让计算机知道我希望它等待
打印功能中的文本。限定符['translation']
,然后用宽度=60的文本换行


我使用cmd或powershell将此代码作为脚本运行,并使用“>X.xx”给出输出文件名和文件类型。

您可以编写一个自定义打印函数,该函数获取一个字符串作为输入,并将该字符串拆分为60个字符的部分,然后打印这些部分

def custom_print(string):
    counter=0
    res=""
    for char in string:
        if counter==60:
            print res
            counter=0
            res=""
            continue
        res+=char
        counter+=1

非常感谢你!这是一个很好的想法,效果很好。答案是正确的,但实施效率很低。将字符串切片60次而不是创建一个新字符串更简单、更快。您可以使用
enumerate
删除计数器变量。的可能重复项