Python 字符串 replacement_field 中不允许使用 int 变量?
No int variables allowed in Python string replacement_field?
我正在尝试将 str.format()
用于具有可变宽度的报告 headers(即列),但我似乎无法使用 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,但看起来它只支持 non-integer 格式。我也尝试了 int()
,但没有成功。
我对使用 byte.center()
的解决方案很满意,但我一直在寻找一种方法来使用更新的语法以获得更大的灵活性。
如有任何帮助,我们将不胜感激!
您必须将宽度作为变量传递给格式函数,并让它知道您需要一个名为 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()
我正在尝试将 str.format()
用于具有可变宽度的报告 headers(即列),但我似乎无法使用 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,但看起来它只支持 non-integer 格式。我也尝试了 int()
,但没有成功。
我对使用 byte.center()
的解决方案很满意,但我一直在寻找一种方法来使用更新的语法以获得更大的灵活性。
如有任何帮助,我们将不胜感激!
您必须将宽度作为变量传递给格式函数,并让它知道您需要一个名为 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()