Rol*_*Bly 3 python string format
为了打印表格数据的标题,我想仅使用一种格式字符串line和一种列宽规格w1, w2, w3(或者即使w = x, y, z可能的话)。
我已经看过这个,但是tabulate等等,不要让我像那样证明专栏中的内容是合理format的。
这种方法有效:
head = 'eggs', 'bacon', 'spam'
w1, w2, w3 = 8, 7, 10 # column widths
line = ' {:{ul}>{w1}} {:{ul}>{w2}} {:{ul}>{w3}}'
under = 3 * '='
print line.format(*head, ul='', w1=w1, w2=w2, w3=w3)
print line.format(*under, ul='=', w1=w1, w2=w2, w3=w3)
Run Code Online (Sandbox Code Playgroud)
我必须在格式字符串中使用单独的名称作为 width {w1}, , ... 吗?{w2}尝试给出{w[1]}, {w[2]},KeyError或keyword can't be an expression。
我也认为这w1=w1, w2=w2, w3=w3不是很简洁。有没有更好的办法?
如今,使用 f 字符串格式变得非常容易。
如果您正在使用
print(f'{token:10}')
Run Code Online (Sandbox Code Playgroud)
如果您希望 10 成为另一个变量(例如所有标记的最大长度),您可以编写
print(f'{token:{maxTokenLength}}')
Run Code Online (Sandbox Code Playgroud)
换句话说,将变量括在{}
在您的特定情况下,您所需要的就是这个。
head = 'eggs', 'bacon', 'spam'
w1, w2, w3 = 8, 7, 10 # column widths
print(f' {head[0]:>{w1}} {head[1]:>{w2}} {head[2]:>{w3}}')
print(f' {"="*w1:>{w1}} {"="*w2:>{w2}} {"="*w3:>{w3}}')
Run Code Online (Sandbox Code Playgroud)
哪个产生
eggs bacon spam
======== ======= ==========
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2851 次 |
| 最近记录: |