我有要打印到文件的数据。对于缺失的数据,我希望打印实际数据的平均值。但是,平均值计算得超过了所需的4位小数。如何同时写入平均值并将其格式化?
我尝试过以下操作,但不断收到错误:
outfile.write('{0:%.3f}'.format(str(mean))+"\n")
答案 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))