在python中以同一行打印

2024-04-29 12:15:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还不熟悉,我需要你的帮助。在

我有一个这样的文件:

>chr14_Gap_2
ACCGCGATGAAAGAGTCGGTGGTGGGCTCGTTCCGACGCGCATCCCCTGGAAGTCCTGCTCAATCAGGTGCCGGATGAAGGTGGT
GCTCCTCCAGGGGGCAGCAGCTTCTGCGCGTACAGCTGCCACAGCCCCTAGGACACCGTCTGGAAGAGCTCCGGCTCCTTCTTG
acacccaggactgatctcctttaggatggactggctggatcttcttgcagtccaaggggctctcaagagt
………..
>chr14_Gap_3
ACCGCGATGAAAGAGTCGGTGGTGGGCTCGTTCCGACGCGCATCCCCTGGAAGTCCTGCTCAATCAGGTGCCGGATGAAGGTGGT
GCTCCTCCAGGGGGCAGCAGCTTCTGCGCGTACAGCTGCCACAGCCCCTAGGACACCGTCTGGAAGAGCTCCGGCTCCTTCTTG
acacccaggactgatctcctttaggatggactggctggatcttcttgcagtccaaggggctctcaagagt
………..

一个字符串作为标记,另一个字符串代表dna序列。 我要计算N个字母的个数和小写字母的个数,然后取百分比。 我写了下面的脚本,但我有一个打印问题。在

^{pr2}$

它可以在第一行打印标记,在第二行打印waste变量,如下所示:

chr10_Gap_18759
The waste persentage is: 52.0

我怎样才能在同一行打印,制表符分开?在

例如

chr10_Gap_18759      52.0 
chr10_Gap_19000      78.0 
…….

非常感谢。在


Tags: 文件字符串标记字母代表序列dnagap
3条回答

不要在(i%2 == 0)时打印name,只需将其保存在变量中,并在下一次迭代中与百分比一起打印:

 print("{0}\t{1}".format(name, round(waste)))

This method of string formatting (new in version 2.6) is the new standard in Python 3, and should be preferred to the % formatting described in String Formatting Operations in new code.

您可以用以下方式打印:

print name, "\t", round(waste)

如果您使用的是python2.X 我会对你的代码做些修改。python的argparse模块用于从命令行管理参数。我会这样做:

^{pr2}$

您也可以像其他答案一样用print("{}\t{}".format(name, round(waste)))打印它

我不确定i%2的用法,请注意,如果序列使用和奇数行数,则在同一事件发生之前,您将无法获得下一个序列的名称。我会检查该行是否以“>;”开头,然后使用store the name,并将下一行的字符相加。在

我已经修复了缩进和冗余:

#!/usr/bin/python
"""
This script reads the sequences of the desert areas (fasta files) and calculates the percentage of the Ns and the repeats.
2014-10-05 v1.0 by Vasilis
2014-10-05 v1.1 by Llopis
2015-02-27 v1.2 by Cees Timmerman
"""

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("fasta_file", help="The fasta file to be processed.", type=str)
args = parser.parse_args()

with open(args.fasta_file, "r") as f:
    for line in f.readlines():
        line = line.strip()
        if line[0] == '>':
            name = line.split(">")[1]
            print name,
        else:
            numberOfN = line.count('N')
            allChar = len(line)
            lowerChars = sum(1 for c in line if c.islower())
            Ns_percentage = 100 * (numberOfN/float(allChar))
            lower_percentage = 100 * (lowerChars/float(allChar))
            waste = Ns_percentage + lower_percentage

            print "\t", round(waste)  # Note: https://docs.python.org/2/library/functions.html#round

美联储:

^{pr2}$

给出:

C:\Python27\python.exe -u "dna.py" fasta.txt
Process started >>>
chr14_Gap_2     29.0
chr14_Gap_3     29.0
<<< Process finished. (Exit code 0)

使用我最喜欢的pythonide:Notepad++NppExec plugin。在

相关问题 更多 >