使用.format()打印变量字符串和四舍五入的数字
我想打印出这样的内容:
你好 ¦ 7.16
这是我正在使用的代码:
MyString = 'Hello'
MyFloat = 7.157777777
print "{} ¦ {0:.2f}".format(MyString, MyFloat)
但是我遇到了这个错误:
ValueError: cannot switch from automatic field numbering to manual field specification
如果我尝试:
MyString = 'Hello'
MyFloat = 7.157777777
print "{s} ¦ {0:.2f}".format(MyString, MyFloat)
或者用str代替s,我又得到了这个错误:
KeyError: 's'
有没有什么办法可以打印一个变量字符串和一个四舍五入的浮点数?或者说有没有类似于%s
的东西我应该使用?
1 个回答
25
你在第二个字段里用了一个编号引用;这里的0
表示你想用传给str.format()
的第一个参数(比如MyString
),而不是MyFloat
这个参数,它是编号1
。
因为你不能对字符串对象使用.2f
这种格式,所以你才会出现错误。
把0
去掉:
print "{} ¦ {:.2f}".format(MyString, MyFloat)
因为没有名字或索引号的字段会自动编号,或者使用正确的数字:
print "{} ¦ {1:.2f}".format(MyString, MyFloat)
如果你选择后者,最好保持一致,明确地用0
作为第一个占位符:
print "{0} ¦ {1:.2f}".format(MyString, MyFloat)
另一种选择是使用命名引用:
print "{s} ¦ {f:.2f}".format(s=MyString, f=MyFloat)
注意这里传给str.format()
的关键字参数。