可能重复:
“ValueError: zero length field name in format” error in Python 3.0,3.1,3.2
我花了好几个小时试图解决这个问题,但无济于事。我看了this guide。 我没有找到如何做我需要的任何例子。
当我运行脚本时,我收到此错误(部分省略):
Traceback (...):
[...]
output.write("{: > 026,.18e} {: > 026,.18e}\n".format(x,y))
ValueError: zero length field name in format.
代码是用python 2.6或2.7编写的,但我运行的是python 3.1。我如何更改输出格式以便它可以工作?
def f(x,y,a = 0.01):
return y/(a+x)-y**3
def ekspEuler(N,dat):
output = open(dat,"w")
h = 3.0/N
x,y = 0,1 #zac.pogoj
for i in range(1,N+2):
output.write("{: > 026,.18e} {: > 026,.18e}\n".format(x,y))
y += h*f(x,y)
x = i*h
output.close()
感谢您的帮助。
答案 0 :(得分:146)
您可能正在运行旧的Python版本,而不是3.1。在Python 2.6中,您需要格式规范的索引,如下所示:
"{0} {1}\n".format(x,y)
将您的Python版本更新为最近的版本,最好是2.7或3.2,以解决问题。根据文档,省略数字索引should work in Python 3.1:
在版本3.1中更改:位置参数说明符可以省略,因此“{} {}”相当于“{0} {1}”。