f = open("outputdata.txt", 'w')
for i in range(len(mydose)):
t = (mygrid[i]+mygrid[i+1])/2.0
f.write("%12.6f %12g %12g" % (t, mydose[i], myerrs[i]*mydose[i]))
前面的代码为我提供了 outputdata.txt 文件,其中所有数据都在一行中。现在,我想写3列 t , mydose [i] 和* myerrs [i] mydose [i] 。我试过了:
f = open("outputdata.txt", 'w')
for i in range(len(mydose)):
t = (mygrid[i]+mygrid[i+1])/2.0
f.write("%12.6f %12g %12g" % (t, mydose[i], myerrs[i]*mydose[i],'\n'))
给了我 Typeerror:并非在字符串格式化过程中转换了所有参数。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
只需在末尾添加\ n
f.write("%12.6f %12g %12g\n" % (t, mydose[i], myerrs[i]*mydose[i]))
答案 1 :(得分:1)
这可以解决您的问题:
with open("outputdata.txt", 'w') as f:
for (i, (err, dose)) in enumerate(zip(myerrs, mydose)):
t = (mygrid[i] + mygrid[i + 1]) / 2.
f.write("%12.6f %12g %12g\n" % (t, dose, err * dose))
将来您可能会考虑使用csv
模块(带空格分隔符)来编写此文件。
答案 2 :(得分:1)
你忘了“%s”:
f.write("%12.6f %12g %12g %s" % (t, mydose[i], myerrs[i]*mydose[i],'\n'))
答案 3 :(得分:0)
将代码视为打击:
f = open("outputdata.txt", 'w')
for i in range(len(mydose)):
t = (mygrid[i]+mygrid[i+1])/2.0
f.write("%12.6f %12g %12g\n" % (t, mydose[i], myerrs[i]*mydose[i]))