我正在尝试将str.format()
用于具有可变宽度的报表标题(即列),但我似乎无法使用int
变量来执行此操作:
hlist =['h1','h2','h3','h4']
width = 7
for i in range(len(hlist)):
# print(hlist[i].center(width), end=' ') # this works
print('{:^width}'.format(hlist[i]), end=' ') # this doesn't
print()
for i in range(len(hlist)):
# print('------'.center(width), end=' ') # this works
print('{:-<width}'.format('-'), end=' ') # this doesn't
print()
运行此代码会给我:
ValueError: Invalid format specifier
使用任何int
字面值代替width
都可以。我研究了here,我认为我已经接近了format_spec
arg,但看起来它只支持非整数格式。我也尝试了int()
,但没有运气。
我对使用byte.center()
的解决方案感到满意,但我正在寻找一种方法来利用更新的语法以获得更大的灵活性。
非常感谢任何帮助!
答案 0 :(得分:0)
您必须将宽度作为变量传递给format函数,并让它知道您需要一个名为width
的变量,而不是文字字符串。由于大括号可以嵌套,请执行以下操作:
hlist =['h1','h2','h3','h4']
width = 7
for i in range(len(hlist)):
print('{:^{width}}'.format(hlist[i], width=width), end=' ')
print()
for i in range(len(hlist)):
print('{:-<{width}}'.format('-', width=width), end=' ')
print()