在 Python 中对齐字符串

Posted

技术标签:

【中文标题】在 Python 中对齐字符串【英文标题】:Aligning strings in Python 【发布时间】:2016-03-28 20:07:17 【问题描述】:

我搜索了在 Python 中创建对齐的字符串并找到了一些相关的东西,但对我没有用。这是一个例子:

for line in [[1, 128, 1298039], [123388, 0, 2]]:
    print(':>8 :>8 :>8'.format(*line))

输出:

       1      128  1298039
  123388        0        2

这是我在 shell 中看到的:

如您所见,对齐并没有发生。使用\t 时也会出现同样的问题。 如何以整齐的表格格式对齐字符串?

【问题讨论】:

【参考方案1】:

您已将 IDLE shell 配置为使用 proportional 字体,一种对不同字符使用不同宽度的字体。请注意 () 对占用的水平空间量与它上面的 > 字符几乎相同。

您的代码在其他方面完全正确;使用固定宽度的字体,数字正确排列。

改为使用 固定宽度 字体。 Courier 是一个不错的默认选择,但 Windows 安装了各种其他成比例的字体,包括 Consolas。

选项 -> 配置 IDLE 菜单中配置字体。从 Font Face 列表中选择不同的字体。下面面板中的示例字符应该对齐(除了最后的第二行k,它应该突出)。

【讨论】:

感谢@MartijnPeters。是否有其他固定宽度字体可用? @SamChats:很多。它们也被称为“等宽”,在谷歌上搜索更多。想不到:Lucida Sans Typewriter、Monaco、Andale Mono、Menlo、Courier、Courier New、PT Mono、Bitstream Vera Sans Mono 等。

以上是关于在 Python 中对齐字符串的主要内容,如果未能解决你的问题,请参考以下文章

[Python]中英文混合字符串的对齐

python对齐输出使三个数字空格

python文本 字符串对齐

Python中如何对字符串进行左,右,居中对齐

Python:固定长度字符串左/右对齐多个变量

第24讲:Python字符串大小写转换对齐子串的替换