2012-04-07 10 views
55

Possible Duplicate:
“ValueError: zero length field name in format” error in Python 3.0,3.1,3.2とValueError:フォーマットPythonで長さゼロのフィールド名

私はこの問題を解決しようと時間を費やしたが、無駄にしています。私は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

まあ、何をしたいですか?あるいは、別の方法で尋ねられますが、なぜ "{} {}"。format(x、y) 'が必要なのでしょうか? – phihag

+0

私はまだ同じエラーが発生します。 – malganis

+0

1つの括弧内に2つの指定子があるという問題はありますか?私は.18eを省略し、次にOverflowErrorを取得します。(34、 'Numerical result our range') – malganis

答えて

134

古いPythonバージョンを実行している可能性がありますが、3.1ではありません。

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

は、問題を解決するために、好ましくは2.7または3.2、最近のものにあなたのPythonのバージョンを更新します。Pythonの2.6では、次のような形式の仕様でインデックスを、必要とします。ドキュメントによれば、数値インデックスを除いてshould work in Python 3.1

Changed in version 3.1: The positional argument specifiers can be omitted, so '{} {}' is equivalent to '{0} {1}'.

+0

私はPython 3.1.3を実行していますが、私はGeannyを使用しています。私は3.2バージョンをインストールする方法を知らない。私はLinuxには新しいです。 – malganis

+0

申し訳ありませんが、私は* Geanny *が何であるか分かりません。あなたはエディタ[Geany](http://www.geany.org/)を意味しますか?いずれにしても、Pythonのバージョンは 'import sys; print(sys.version)'で調べることができます。 1つはあなたが使用している多くのLinuxディストリビューションですか? – phihag

+0

これはGeanyです。私はUbuntu 10.04を使用しています。あなたは正しかった。私は2.6.5を使用しています。私はこれを試してみました:output.write( "{0:> 026、.18e} {1:> 026、.18e} \ n" .format(x、y))ValueError:無効な変換指定 – malganis

関連する問題