在Python 2中,我使用str.format()
将要打印的一堆文本列对齐到终端。基本上,它是一张 table ,但我不会打印任何边框或任何东西,它只是一行文本,并按列对齐。
print
语句),则所有内容都会按预期打印。 我已经验证了
colorama
和 xtermcolor
的相同问题。结果是相同的。因此,我敢肯定,这与str.format()
与字符串中间的ANSI转义序列不能很好地发挥作用有关。但是我不知道该怎么办! :(我真的很想知道是否有解决此问题的方法。
颜色和对齐方式是用于提高可读性的强大工具,而可读性是软件可用性的重要组成部分。如果可以在不手动对齐文本的每一列的情况下完成此操作,这对我来说意义重大。
帮不上忙吗? ☺
最佳答案
Python不会区分“普通”字符和ANSI颜色代码,后者也是终端解释的字符。
换句话说,在终端上打印'\x1b[92m'
可能会改变终端文本的颜色,Python认为这只是一组5个字符。如果改用print repr(line)
,则python将改为打印字符串文字形式,包括对非ASCII可打印字符使用转义码(因此ESC ASCII代码27显示为\x1b
)以查看已添加的数量。
您需要手动调整列的对齐方式,以允许这些额外的字符。
如果没有您的实际代码,我们很难为您提供帮助。