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

3.1 ではなく、古いバージョンの Python を実行している可能性があります。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 に答える