【问题标题】:Pretty print output in nested loop in pythonpython中嵌套循环中的漂亮打印输出
【发布时间】:2016-03-01 12:58:48
【问题描述】:

我有一个像这样的嵌套循环:

for a in b.keys():
    for c in b[a]:
        out = '%-30s %s' % (c, a)
        space = out.count(' ')
        split = space * '-'
        print '\t%-30s %s  %-10s' % (c, split, a)

所以结果是:

test1         ------- something1
test23sdfsf   ----- dsffdgdgfddfsdf

但我想要的是:

test1 -------------- something1
test23sdfsf -------- dsffdgdgfddfsdf

【问题讨论】:

  • 你可以使用ljust(): out = "%s %s" % (c.ljust(maxwidth, '-'), a)
  • @它不符合我所说的问题。
  • 我认为这应该是 zondo 的答案,因为 ljust() 比下面的花括号疯狂更 Pythonic。
  • @J.J:完成。你会投第一个赞成票吗? :)
  • 这是我看到它的第一件事;)

标签: python for-loop multiple-columns pretty-print


【解决方案1】:

如果您想使用30 的最大宽度,请执行以下操作:

for a in b.keys():
    for c in b[a]:
        print("%s %s" % (c.ljust(30, '-'), a))

【讨论】:

  • 好答案。这是第一列后缺少的空间。 test1-------------- something1。怎样才能双修?
  • 在 py2 中:print (c+' ').ljust(20,'-') , a
  • @MLSC:正如 J.J 所说,你可以添加一个空格:print('%s %s" % ((c+' ').ljust(30, '-'), a))
【解决方案2】:

如何使用以下内容:

Test: {0:15} Something {1}".format(Variable,AnotherVar)

您可以根据长度计算数字。

添加更多示例:

>>> a="test"
>>> b="another_one"
>>> "A: {0:20} B {1}".format(a,b) 'A: test                 B another_one'
>>> "A: {0:15} B {1}".format(a,b) 'A: test            B another_one'
>>> "A: {0:4} B {1}".format(a,b) 'A: test B another_one'

您还可以根据要打印的字符串长度为第一个 {} 中的第二个数字使用变量。

【讨论】:

  • 如何更改示例?
  • 我发布了更多示例。您需要使用第一个字符串的长度来计算字符串之间的剩余距离。
  • 我怎样才能将- 放在它们之间?
【解决方案3】:

您可以在nested arguments and complex examples 中看到我的解决方案的相同示例

for a in b.keys():
    for c in b[a]:
        print '{key:{fill}{align}20} {item}'.format(key=key + ' ', fill='-', align='<', item=b[key])

【讨论】:

  • 你的答案中的c 在哪里?
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 2018-04-04
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
相关资源
最近更新 更多