如何在str.format()中使用变量的宽度和精度?

时间:2014-10-27 14:37:14

标签: python python-3.x string-formatting

如何在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

如何使用变量来获得精度和宽度?

2 个答案:

答案 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]))

这将从变量值构建格式字符串。