f = open('freq.txt', 'w')
def format(value):
return "%.5f" % value
formatted = [format(float(v)) for v in result]
f.write(str(formatted))
我的代码出了什么问题? 结果是带有240个浮点数的列表,我想将它们写入每行一个文件。
EDIT 是的,正如马丁指出的那样,我得到了这样的文件
['56337.19531', '48429.55859', '44960.00000', '41631.85938', '35788.30469', '33180.00000',
我只想要数值。
答案 0 :(得分:2)
该错误消息告诉您错误:value
是一个字符串,而不是一个浮点数。你只需要转换它:
def format(value):
return "%.5f" % float(value)
您可能不想将列表写入文件。您可能希望每个数字都在自己的行上。为此,您需要使用str.join()
:
f.write('\n'.join(formatted))
更好的是,使用os.linesep
:
import os
f.write(os.linesep.join(formatted))
答案 1 :(得分:0)
试试这个:
f = open('freq.txt', 'w')
def format(value):
return "%.5f" % float(value)
formatted = [format(v) for v in result]
f.writelines(formatted)
f.close()
答案 2 :(得分:0)
我认为result
目前包含字符串列表,而不是浮点列表。即使每个字符串只包含一个浮点数,你必须向python指出你想将它们视为浮点而不是字符串。
为此,您需要强制转换:float(val)
从strting'val'返回浮点值。
所以,你的代码应该是:
f = open('freq.txt', 'w')
def format(value):
return "%.5f" % value
formatted = [format(float(v)) for v in result]
f.write(str(formatted))
或者,如果你想总是将给定的参数强制转换为函数,以避免进一步的错误:
f = open('freq.txt', 'w')
def format(value):
return "%.5f" % float(value)
formatted = [format(v) for v in result]
f.write(str(formatted))