67

可能重复:
Python 3.0、3.1、3.2 中的“ValueError:格式中的零长度字段名称”错误

我花了几个小时试图解决这个问题,但无济于事。我读了这个指南。我还没有找到任何示例如何做我需要的。

当我运行脚本时,出现此错误(部分省略):

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()

谢谢你的帮助。

4

1 回答 1

159

您可能正在运行旧的 Python 版本,而不是 3.1。在 Python 2.6 中,您需要格式规范中的索引,如下所示:

"{0} {1}\n".format(x,y)

将您的 Python 版本更新到最新版本,最好是 2.7 或 3.2,以解决问题。根据文档,省略数字索引应该在 Python 3.1 中工作

在 3.1 版中更改:可以省略位置参数说明符,因此“{} {}”等效于“{0} {1}”。

于 2012-04-07T11:53:27.810 回答