python - python中打印时的字符串对齐

标签 python string formatting indentation text-alignment

我想像这样输出文本:

Якета            : **************************** 1250.23 €
Обувки за футбол : ********************** 912.30 €
Екипи            : ************** 513.45 €
Топки            : ************ 502.52 €
T-SHIRTS         : ********* 420.19 €

如何使用占位符将所有冒号缩进到最长字符串的长度 - 在本例中为 Обувки за футбол

最佳答案

也许,最优雅的方法是使用 format 方法。它允许轻松定义字符串将使用的空间:

>>> name = 'Якета'
>>> asterisks = '****************************'
>>> price = 1250.23
>>> print '{0:17}: {1} {2} €'.format(name, asterisks, price)
Якета       : **************************** 1250.23 €

如果您需要以编程方式定义填充大小(例如,动态接受较大的字符串而不是对其大小进行硬编码),只需使用 ljust:

>>> name = 'Якета'
>>> asterisks = '****************************'
>>> price = 1250.23
>>> padding = 17
>>> print '{0}: {1} {2} €'.format(name.ljust(padding), asterisks, price)
Якета       : **************************** 1250.23 €

考虑到之前未知最大字符串大小并且脚本必须适应它的情况,我们只需计算最大字符串大小并将其放入 padding 中即可:

>>> names = ['abc', 'defghijklm', 'op', 'q']
>>> asterisks = '****************************'
>>> price = 1250.23
>>> padding = max(map(len, strings))
>>> for name in names:
        print '{0}: {1} {2} €'.format(name.ljust(padding), asterisks, price)
abc       : **************************** 1250.23 €
defghijklm: **************************** 1250.23 €
op        : **************************** 1250.23 €
q         : **************************** 1250.23 €

This thread有一个非常相似的问题。

关于python - python中打印时的字符串对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35153862/

相关文章:

python - 我无法让 django 调试工具栏出现在浏览器中。附上项目

java - 将逗号分隔的 double 字符串拆分为 Java8 中的 double 组

c - 为什么应该将 String 声明为固定大小的数组

PHP 货币格式尾随零

python - 如何在 BeautifulSoup 中提取包含普通文本和其他 HTML 标签的 <span> 内容?

python - 如何计算 Pandas 中的分类时间序列数据

vim - 在 Vim 中使用 AStyle

formatting - .liquid-file(Shopify 主题文件)的自动格式化

python - 尝试将数据帧与分类数据连接时出现意外错误

string - 如何将多个字符列组合成 R 数据框中的单个列