【问题标题】:String alignment does not work with ansi colors字符串对齐不适用于 ansi 颜色
【发布时间】:2018-07-26 18:44:29
【问题描述】:

用 Python 面对这个问题:

a = "text"
print('{0:>10}'.format(a))
# output:      text
b = "\x1b[33mtext\x1b[0m"
print('{0:>10}'.format(b))
# output: text

如您所见,一旦将着色标签添加到文本中,右对齐就会停止工作。第二个“文本”应该像第一个一样缩进,但事实并非如此。

【问题讨论】:

  • 有趣。可以确认这也不适用于 f 字符串:print(f"{b:>10}"),所以至少它是 consistent
  • 啊哈,注意,len(b) 是 13... 我猜是有道理的
  • Juanpa,你是对的,就是这个原因。感谢您的快速回复!
  • 请不要破坏您的帖子。如果您认为您的问题没有用或不再有用,则应删除,而不是编辑掉所有实际使其成为问题的数据。通过在 Stack Exchange 网络上发布,您已授予 SE 分发该内容的不可撤销的权利(根据 CC BY-SA 3.0 许可)。根据 SE 政策,任何破坏行为都将被撤销。
  • 你能删除我的帐户吗?

标签: python text printing colors format


【解决方案1】:

这是意料之中的,因为数据已经比您的字段宽度长:

>>> len(b)
13
>>> len('{0:>10}'.format(b))
13

要查看解决方法,请在此处查看:Printed length of a string in python(尤其是the answer from user dawg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 2015-08-06
    • 2014-10-04
    • 2016-07-21
    • 1970-01-01
    • 2012-12-17
    • 2011-04-13
    相关资源
    最近更新 更多