【问题标题】:Processing input in a function in Python 3.3在 Python 3.3 中处理函数中的输入
【发布时间】:2014-03-26 14:13:36
【问题描述】:

我有一个关于格式化输出的问题。可能很简单,但我已经研究了大约 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]
--------------------

有趣的是,我的程序的一部分已经做了几乎完全相同的事情,但我就是不明白我在做什么不同,所以如果有人能指出我,我会很感激正确的方向:(

【问题讨论】:

  • 该代码中只有一行与您的问题相关!另外:“我的程序的一部分已经做了几乎完全相同的事情” - 所以让它成为一个函数,并从两个地方调用它。
  • 我试过了,但由于某种原因,它总是给我一个列表索引超出范围的错误。我敢肯定我只是太累了,因为这个原因它就在我的头上飞来飞去,因为它看起来真的很简单。
  • 我们无法告诉您此代码与您程序的其他部分之间的区别,因为您没有发布其他部分。据我们所知,它正在调用print nice_formatted(largest),而你这次忘记调用它了。
  • 最大的唯一出现的地方就是这里,就是我给heapq函数起的名字。我按照 jonrsharpe 的建议做了,并将另一段代码变成了一个函数,它运行良好!我什至不需要改变太多

标签: python string list format output


【解决方案1】:

你可以使用 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
--------------------

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 2020-08-22
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多