在Python 3.3中处理函数中的输入

时间:2014-03-26 14:13:36

标签: python string list format output

我对格式化输出有疑问。非常简单,但我已经做了10个小时的工作,所以我无法弄清楚为什么它不起作用

elif command.startswith("TOP") and len(command) > 3:
        digi_trans = str.maketrans('', '', string.digits)
        char_trans = str.maketrans('', '', string.ascii_letters)
        bracket_trans = str.maketrans('', '', "[']")
        subset = command.translate(digi_trans)[3:]
        if subset == "EDITORS":
            top_names = []
            count = 0
            count_limit = int(command.translate(char_trans))
            top_names = sorted(name_temp.items(), key=lambda x:x[1], reverse=True)
            largest = heapq.nlargest(count_limit, top_names, key=operator.itemgetter(1, 1))
            print(largest)

这是我的代码中弄乱我的部分。 top_names列表只是两个项目对的排序列表,一个名称和一个值。

它目前输出(假设我想要命令中的前2个值):

[('Tzartzam', [16]), ('Quercusrobur', [14])]

我想输出这样的东西:

--------------------
Tzartzam        [16]
Quercusrobur    [14]
--------------------

有趣的是,我已经拥有了我的程序的一部分几乎完全相同的东西,但我只是无法理解我在做什么不同所以如果有人指出我,我会很感激正确的方向:(

1 个答案:

答案 0 :(得分:0)

你可以使用rjust和ljust:

top_names=[('Tzartzam', [16]), ('Quercusrobur', [14])]
print "--------------------"
for n in top_names:
    print n[0].ljust(16),str(n[1][0]).rjust(3)
print "--------------------"

输出:

--------------------
Tzartzam          16
Quercusrobur      14
--------------------