【问题标题】:Make format string align integer after character使格式字符串在字符后对齐整数
【发布时间】:2014-11-23 13:59:11
【问题描述】:

我正在尝试制作一个执行以下操作的格式字符串。

I lost 10 turtles        Total: 20 Turtles
I lost  5 turtles        Total: 15 Turtles

我想出了这个字符串"I lost {:>2} {:<13}Total:{:<}".format(10,"turtles",20) 无论如何可以摆脱{:<13}[,"turtles"] 但仍然产生相同的结果?

【问题讨论】:

  • 很清楚,只需将{:<13} 替换为turtles 你想要这个吗?
  • 我也认为这是要做的事情,但是这样做时对齐方式并不统一。这是需要的{:<13},我想要的是第一个整数有它自己的类型,海龟。
  • "I lost {:<13} Total:{:<}".format("10 turtles","20 turtles") 呢?
  • 当你只有相同的小数位数时效果很好,但是对于丢失 5 个海龟,对齐会丢失。我可以按格式格式化字符串,但现在我使用的是@falsetru 提供的答案。
  • 我加个答案看看!

标签: python string format format-string


【解决方案1】:

turtles 放入格式字符串中:

>>> "I lost {:>2} {:<13}Total:{:<}".format(10, "turtles", 20)
'I lost 10 turtles      Total:20'
>>> "I lost {:>2} turtles      Total:{:<}".format(10, 20)  # <--------
'I lost 10 turtles      Total:20'

>>> "I lost {:>2} {:<13}Total:{:<} Turtles".format(10, "turtles", 20)
'I lost 10 turtles      Total:20 Turtles'
>>> "I lost {:>2} turtles      Total:{:<} Turtles".format(10, 20)  # <--------
'I lost 10 turtles      Total:20 Turtles'

【讨论】:

  • 这正是我目前正在做的事情,我的问题是是否有办法删除它。我觉得格式化程序不必替换总是相同的东西。
  • @Emilgardis,见第二和第四行代码。
  • 是的,这可行,但它看起来确实是一个相当愚蠢的解决方案(以您自己放置空间的方式)
【解决方案2】:

这个呢?:

>>> "I lost {:<20} Total:{:<}".format("10 turtles","20 turtles")
'I lost 10 turtles           Total:20 turtles'

或函数:

>>> def formater(i,j):
...  return "I lost {:<20} Total:{:<}".format("{} turtles".format(i),"{} Turtles".format(j))
... 
>>> formater(10,20)
'I lost 10 turtles           Total:20 Turtles'

【讨论】:

  • 如果第一种格式(长句)中第一个字符串的第一种格式是"{:2} turtles",则可以使用。
猜你喜欢
  • 2017-04-20
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 2011-08-27
  • 1970-01-01
相关资源
最近更新 更多