字符串格式对齐

时间:2014-05-13 15:15:44

标签: python python-2.7

我设法将一些数据打印成这种格式:

GAT     Aspartic        36.4597          87663      3.65
CGG     Arginine        2.3728            5705      0.24

但是可以观察到第3和第4列在左边对齐。 我通过以下方式实现了这一目标:

frequency = {'GAT': ['Aspartic', 36.459695863509154, 87663, 0.03645969586350915],
             'CGG': ['Arginine', 2.372752072154954, 5705, 0.002372752072154954]}

for codon in frequency.keys():
        print "{}\t\t{:14s}\t{:>5.4f}\t\t\t{:6.0f}\t\t{:.2%}\n".format(codon, frequency[codon][0],frequency[codon][1], frequency[codon][2], frequency[codon][3])

将其更改为:

f.write("{}\t\t{:<14s}\t{:<.4f}\t\t\t{:<.0f}\t\t{:.2f}\n".format(...)

没有改善对齐方式。

不应该让第一个>正确对齐吗?我看了documentation,但我没理解 有人可以进一步解释文件吗?感谢

2 个答案:

答案 0 :(得分:1)

您的问题是,您的列太紧了。指定更长的格式(例如:>8.4f)会为您提供右对齐输出。

答案 1 :(得分:1)

怎么样

frequency = {'GAT': ['Aspartic', 36.459695863509154, 87663, 0.03645969586350915],
             'CGG': ['Arginine', 2.372752072154954, 5705, 0.002372752072154954]}

multi = 100
space = 20

for codon in frequency.keys():
    row = frequency.get(codon)
    values = [codon, row[0], "%.4f" % row[1], str(row[2]), "%.2f"% (row[3]*multi)]
    r.write(''.join(map(lambda x: x.rjust(space), values)))