python - 与字符串格式对齐

标签 python string formatting string-formatting

我希望通过字符串格式实现这种输出:

GBP......0.8639......0.8399

我尝试使用以下代码(i 代表货币,e[0] 和 e[1] 是买入和卖出值):

"{i:.<10}{e[0]:.^6}{e[1]:.>6}".format(i=i, e=e)

但是上面的代码并没有将第二个数字向右对齐,而只是将其添加到第一个数字的后面,如下所示:

GBP.......0.86390.8399

我该如何纠正这个问题?

最佳答案

作为通用解决方案:

  • 如果您希望右列、中列和左列分别右对齐、居中对齐、左对齐,请使用此格式字符串:

    >>> '{0:.<10}{1:.^10}{2:.>10}'.format('GBP', 0.8639, 0.8399)
    'GBP.........0.8639......0.8399'
    
    # Another example
    >>> '{0:.<10}{1:.^10}{2:.>10}'.format('GBPTEST', 0.90, 0.8)
    'GBPTEST......0.9...........0.8'
    
  • 或者,如果您希望除最右边的列之外的所有列都右对齐,则使用此格式字符串:

    >>> '{0:.<10}{1:.>10}{2:.>10}'.format('GBP', 0.8639, 0.8399)
    'GBP...........0.8639....0.8399'
    
    # Another example
    >>> '{0:.<10}{1:.>10}{2:.>10}'.format('GBPTEST', 0.90, 0.8)
    'GBPTEST..........0.9.......0.8'
    
  • 或者,如果您希望所有列左对齐,则使用此格式字符串:

    >>> '{0:.<10}{1:.<10}{2:<10}'.format('GBP', 0.8639, 0.8399)
    'GBP.......0.8639....0.8399    '
    
    # Another example
    >>> '{0:.<10}{1:.<10}{2:<10}'.format('GBPTEST', 0.90, 0.8)
    'GBPTEST...0.9.......0.8       '
    

根据您需要的列大小将每个参数的值更改为 10。

<小时/>

下面是问题中提到的特定于参数类型的格式字符串:

>>> '{i:.<10}{e[0]:.^10}{e[1]:.>10}'.format(i='GBP', e=(0.8639, 0.8399))
'GBP.........0.8639......0.8399'

# Another example
>>> '{i:.<10}{e[0]:.^10}{e[1]:.>10}'.format(i='GBPTEST', e=(0.90, 0.8))
'GBPTEST......0.9...........0.8'

关于python - 与字符串格式对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978592/

相关文章:

Python:如何从 argparse 获取所有默认值

python - cqlsh 命令在 cassandra 2.0.8 中不起作用

java - 辅助方法: Doubling Chars in a String but stops recursion after first char

python - 将谷歌云数据存储模拟器与 dev_appserver 一起使用

arrays - 将 C++/CLI 字符串数组转换为字符串向量

java - 删除Java字符串中的破折号并将破折号后的字符大写

javascript - Robin Herbots jquery.inputmask 允许多个值以逗号分隔

git - 只在 git log 修饰中显示 Remote

java - 如何使用表格格式将对象列表打印到文件

python - 嵌套字典到单个字典