如何在str.format()规范中使用宽度和精度的变量?
(我在Python 3中。)
这很好用:
print(' {:<127.127} {:<}'.format(value[1], value[0]))
但这会产生错误:
SHOWLEN = 127
print(' {:<SHOWLEN.SHOWLEN} {:<}'.format(value[1], value[0]))
具体来说,我得到:
Traceback (most recent call last):
File "C:\Users\Dave\Desktop\index\treeIndex.py", line 101, in <module>
treeIndex(sys.argv[1])
File "C:\Users\Dave\Desktop\index\treeIndex.py", line 96, in treeIndex
print(' {:<SHOWLEN.SHOWLEN} {:<}'.format(value[1], value[0]))
ValueError: Invalid format specifier
如何使用变量来获得精度和宽度?
答案 0 :(得分:3)
在括号中加入SHOWLEN
"{varname:<{SHOWLEN}.{SHOWLEN}f}".format(varname=34.54, SHOWLEN=8)
从Format String Syntax文档的以下引用中可以看出这一点:
format_spec字段还可以包含嵌套的替换字段 它。这些嵌套的替换字段只能包含字段名称; 不允许使用转换标志和格式规范。该 format_spec中的替换字段在替换之前被替换 format_spec字符串被解释。这允许格式化 要动态指定的值。
答案 1 :(得分:2)
试
print((' {:<' + str(SHOWLEN) + '.'
+ str(SHOWLEN) +'} {:<}').format(value[1], value[0]))
这将从变量值构建格式字符串。