2016-06-15 2 views
0

私の理解は、Pythonでは、一重引用符と二重引用符は同じ意味です。pythonの書式関数は、一重引用符と二重引用符を別々に扱うのはなぜですか?

for i in range(0, 50): 
    print('{%4s}'.format(i), end="") 

上記のコードは私にKeyError(Python 3.4を使用)を与えてくれます。

私はしかし、二重引用符に形式ファンクション文字列とともに使用引用符切り替える場合:

for i in range(0, 50): 
    print("{%4s}".format(i), end="") # double quotes in format string 

を期待どおりに動作します。

ここで何が起こっているのか、またその理由を理解するのに助けてくれる人はいますか?

+4

私は 'KeyError'を何度も受け取り、複製できませんでした。 – jonrsharpe

答えて

1

いずれのスタイルの引用符でも無効です。あなたが言うように、引用符は何の違いもありません。

%4sは何を期待しているかわかりませんが、ミニ言語の形式では有効な指定子ではありません。あなたは各数字を4つのスペースに詰め込もうとしていますか?

print("{:4}".format(i), end="") 

か、単に

print(format(i, "4"), end="") 
+0

ありがとうございます。何らかの理由で二重引用符が私に期待どおりに出力されているように見えましたが、一重引用符に変更したときにエラーが発生しました。しかし、私はすべてを再起動して再試行したときに、引用符が使用されているかどうかにかかわらずエラーが表示されるようになりました。 – phormalitize

0

は、文字列のモジュロ演算子と.format()関数の両方をミックスしようとしないでください:それがあるべきようならば。

あなたはこれらのいずれかを実行できます。

print("%4s" % i) 

または:第二はきれいに見えます

print(format(i, "4"), end="") 

、私はそれを好むだろう。

関連する問題