python字符串格式化列

Try*_*ard 14 python

我正在尝试格式化字符串,所以一切都在两者之间排列.

APPLES                           $.99                           214                       
kiwi                             $1.09                           755 
Run Code Online (Sandbox Code Playgroud)

我这样做是通过这样做:

fmt = ('{0:30}{1:30}{2:30}'.format(Fruit,price,qty))
Run Code Online (Sandbox Code Playgroud)

如何排列一列?我阅读了文档,但我很困惑.我以为它{1:30}会使它成为30个空格,然后它会打印下一个项目,但它看起来是前一个项目结束的30个空格.

谢谢

Ste*_*ski 38

str.format()使您的字段在可用空间内保持对齐.使用对齐说明符更改对齐方式:

'<' 强制字段在可用空间内左对齐(这是大多数对象的默认值).

'>' 强制字段在可用空间内右对齐(这是数字的默认值).

'='强制将填充放置在符号(如果有)之后但在数字之前.这用于以"+000000120"形式打印字段.此对齐选项仅对数字类型有效.

'^' 强制字段在可用空间内居中.

这是一个示例(左对齐和右对齐):

>>> for args in (('apple', '$1.09', '80'), ('truffle', '$58.01', '2')):
...     print '{0:<10} {1:>8} {2:>8}'.format(*args)
...
apple         $1.09       80
truffle      $58.01        2
Run Code Online (Sandbox Code Playgroud)


rob*_*obm 5

使用 python3 f-strings (不是你的例子,而是我的):

alist = ["psi", "phi", "omg", "chi1", "chi2", "chi3", "chi4", "chi5", "tau"]
for ar in alist:
    print(f"{ar: >8}", end=" ")
print()
for ar in alist:
    ang = ric.get_angle(ar)
    print(f"{ang:8.4}", end=" ")
print()
Run Code Online (Sandbox Code Playgroud)

产生

  psi      phi      omg     chi1     chi2     chi3     chi4     chi5      tau 
4.574   -85.28    178.1   -62.86   -65.01   -177.0    80.83    8.611    115.3 
Run Code Online (Sandbox Code Playgroud)