str.format() 在 Python 2.6 中打印浮点数时出错

str.format() error for printing floats in Python 2.6

我正在尝试使用 Python 的 str.format() 打印一些浮点数。这是示例代码

table = {'pi':3.1415926}
for variable, value in table.items():
    print '{0:10} ==> {0:.2f}'.format(variable, value)

执行此操作时出现以下错误

ValueError: Unknown format code 'f' for object of type 'str'

我不明白为什么 Python 认为 3.1415926 是一个字符串。

谢谢。

你的位置倒过来了:

table = {'pi':3.1415926}
for variable, value in table.items():
    print '{0} ==> {1:.2f}'.format(variable, value)

pi ==> 3.14

或者简单地删除变量,除非你真的想打印 pi 并迭代这些值:

for  value in table.values():
    print '{0} ==> {0:.2f}'.format(value)

3.1415926 ==> 3.14

你也可以使用 **:

table = {'pi':3.1415926}

print '{pi} ==> {pi:.2f}'.format(**table)

当您编写 {0} 时,它指的是格式函数的第一个参数。您需要将其更改为 1.

table = {'pi':3.1415926}
for variable, value in table.items():
    print '{0:10} ==> {1:.2f}'.format(variable, value)

Edit 按照@AshwiniChaudhary 的评论 - 在 Python 2.7 你甚至不需要指定数字,它将自动按顺序使用它们

table = {'pi':3.1415926}
for variable, value in table.items():
    print '{:10} ==> {:.2f}'.format(variable, value)