web-dev-qa-db-ja.com

ValueError:python形式の長さゼロのフィールド名

可能性のある複製:
「ValueError:フォーマット内の長さゼロのフィールド名」エラーPython 3.0,3.1,3.2

この問題を解決するために何時間も費やしましたが、役に立ちませんでした。 このガイド と読みます。必要なことを行う方法の例は見つかりませんでした。

スクリプトを実行すると、次のエラーが表示されます(一部省略)。

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

ご協力いただきありがとうございます。

60
malganis

おそらく、古いPythonバージョンであり、3.1ではありません。Python 2.6では、次のようなフォーマット仕様のインデックスが必要です。

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

Pythonバージョンを最新バージョン、できれば2.7または3.2に更新して問題を修正します。ドキュメントによると、数値インデックスは省略します Python 3.1

バージョン3.1で変更:位置引数指定子は省略できるため、「{} {}」は「{0} {1}」と同等です。

147
phihag