「ValueError:形式の長さがゼロのフィールド名」Python 3.0、3.1、3.2のエラー


120

私はPython(もっと具体的には3)を学習しようとしていますが、次のエラーが発生します。

ValueError: zero length field name in format

私はそれをグーグルで調べました、そして、あなたが数を指定する必要があることがわかりました:

a, b = 0, 1
if a < b:
     print('a ({0}) is less than b ({1})'.format(a, b))
else:
     print('a ({0}) is not less than b ({1})'.format(a, b))

そして、(lynda.comからの)チュートリアルが実際に行うように言っているのとは異なります:

a, b = 0, 1
if a < b:
     print('a ({}) is less than b ({})'.format(a, b))
else:
     print('a ({}) is not less than b ({})'.format(a, b))

次のチュートリアルはPython 3.1で、3.2を使用しています。このエラーについて私が読んだのは、これが<3.1(3.0)でのみ発生するということです。彼らは3.2でこれを元に戻しましたか、それとも私は何か間違ったことをしていますか?

また、ゆっくり話してください;)これは、文字通り私の最初の夜のPython学習であり、Pythonで書いた2番目の「スクリプト」だけです。


1
これを追加してみてください:sysをインポートします。print(sys.version)、誤って他のバージョンのPythonを誤って呼び出さないようにするため
Winston Ewert

回答:


131

どういうわけか、あなたが誤ってpython 2.6を実行していると思います。

この機能は、Python 3を使用している場合は少なくとも3.1、Python 2を使用している場合は2.7でのみ使用できます。


3
ありがとう!それでおしまい!私のシバンを次のように変更する必要があり#! /usr/local/bin/python3ました。Macでのpythonのインストールには3つの異なる場所があります-_- wtf。
オスカーゴッドソン、2011年

4
これは部分的に正しい:OPのコードは2.6ではなくpython 2.7であれば機能します。(@Dennis Williamsonの回答を参照)。
mayhewsw 2014年

WindowsのPython 3.0.1でこの問題が発生します。(それは間違いなくPython cmdlineを開始した後の最初の行で3.0.1を示しています)
inger

@inger、それを使用するにはpython 3.1が必要です。
Winston

うーん、迅速な返信に感謝します。しかし、以下の回答は「2.7以降」と言っています-3.0.1の方が前だったのですか?また、OPは3.0(+その他)の問題について質問しました-答えは「2.6を実行しています」です。これは、3.0自体に問題がないことを示しています。回答を更新していただければ幸いです。ありがとう
inger 2015

148

Python 2.6および3.0では、フィールド番号が必要です。Python 2.7以降および3.1以降では、省略できます。

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

python2.6.4>>> print '|{0:^12}|{1:^12}|'.format(3,4)
|     3      |     4     |

2
本日のバージョンの違いが私を驚かせた!ポインタをありがとう。
Richard Clayton

@Dennis:以前のバージョンのpythonでフィールド番号を指定して問題に対処する方法を示したので、私はあなたの回答に投票しました。ただし、「Python 2.7以降」と言っても誤解を招くようです。他の回答によると、Python 3.0ではフィールド番号が必要です。ウィンストンは彼の回答の最後のコメントで2.7が3.0の後に出たと指摘しているので、あなたの発言は年代順に正しいかもしれませんが、ほとんどの人は空の波括弧が3.0で機能することを示していると読みます。
Tom Barron

@TomBarron:空の波括弧は私にとってはうまくいきますpython3.4 -c 'print("|{}|{}|".format(3,4))'が、3.0にはそれがないようです(3.1以降にはあります)。私の答えを明確にします。
追って通知があるまで一時停止。

2

Eclipseを使用している場合は、Window-> Preferences-> PyDev-> Interpreter-Pythonを確認する必要があります。そこに通訳のリストがあります(名前と場所を含む)。現在のプロジェクトで、たとえば/ usr / bin / pythonにあるインタープリターを使用している場合、おそらく/ usr / bin / python -V whillを実行すると、「Python 2.6.6」のようなものが得られます。そして、ウィンストン・エワートが書いたようなあなたの答えがあります。

(「新規...」ボタンをクリックして「場所」として/ usr / bin / python3を指定するだけで、新しいインターパーターを追加できます。次に、プロジェクトの設定を変更する必要があります(設定-> PyDev-インタープリター/文法)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.