如何在Python中格式化write语句?

时间:2013-11-30 00:53:33

标签: python python-2.7

我有要打印到文件的数据。对于缺失的数据,我希望打印实际数据的平均值。但是,平均值计算得超过了所需的4位小数。如何同时写入平均值并将其格式化?

我尝试过以下操作,但不断收到错误:

outfile.write('{0:%.3f}'.format(str(mean))+"\n")

4 个答案:

答案 0 :(得分:3)

首先,删除%,因为它会使您的格式语法无效。请参阅下面的演示:

>>> '{:%.3f}'.format(1.2345)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid conversion specification
>>> '{:.3f}'.format(1.2345)
'1.234'
>>>

其次,不要将mean放在str中,因为str.format期待浮动(这是格式语法中的f所代表的)。以下是此错误的演示:

>>> '{:.3f}'.format('1.2345')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'f' for object of type 'str'
>>> '{:.3f}'.format(1.2345)
'1.234'
>>>

第三,+"\n"是不必要的,因为您可以将"\n"放在str.format上使用的字符串中。

最后,如我的演示所示,您可以移除0,因为它是多余的。


最后,代码应该是这样的:

outfile.write('{:.3f}\n'.format(mean))

答案 1 :(得分:1)

您不需要使用str()转换为字符串。此外,不需要“%”。只需使用:

outfile.write('{0:.3f}'.format(mean)+"\n")

答案 2 :(得分:0)

首先,字符串的格式与write语句无关。您可以将问题减少到:

string = '{0:%.3f}'.format(str(mean))+"\n"
outfile.write(string)

然后,您的字符串规范不正确,应该是:

string = '{0:.3f}\n'.format(mean)

答案 3 :(得分:0)

outfile.write('{.3f}\n'.format(mean))