2017-08-31 20 views
3

次のエラーが発生しました。どうすれば修正できますか?Python:トリプルダブルクォート文字列形式

KeyError例外: '' プロセスは、名前で渡さなければならない終了コード変数をフォーマットする名前付き1

s = """ 
a b c {a} 
""".format({'a':'123'}) 

print s 
+2

'format'はキーワード引数を取ります。 – user2357112

+1

または 'dict'、' ** {'a': '123'} ' – Wondercricket

答えて

6
s = """ 
a b c {a} 
""".format_map({'a':'123'}) 
+0

私は 'format_map'について知りませんでした。 – Wondercricket

+0

マッピングが通常のdictの場合、 'format_map'を使うのはあまり意味がありません。 – wim

+0

@wimそれは正しいですが、もしあなたがdictを持っていたら、なぜそれを解凍し、 'format_map'を使うことができるときに' format'に渡すのですか? – MSeifert

3

を終了:あなたはデータの辞書を提供している場合

>>> s = """ 
... a b c {a} 
... """.format(a=123) 
>>> print(s) 

a b c 123 

名前を「解凍」することができます:

>>> d = {'a': 123} 
>>> s = """ 
... a b c {a} 
... """.format(**d) 
>>> print(s) 

a b c 123 
+2

を展開することができます。もしPython 3.6を使っているのなら、f-stringsを使うこともできます。 –

+2

これは、データが有効範囲内の名前に由来する場合にのみ選択できます。 – wim

1

あなたは間違って文字列のformat方法を使用している:あなたが名前.format(a=123)で引数を渡すか、辞書を期待format_mapを使用する必要があります。 formatでは、文字列内の名前を置き換えるときにキーワード引数を渡す必要があります。

あなたのケースでメソッドを使用する正しい形式は、次のようになります。

s = """ 
a b c {a} 
""".format(a='123') 

print s 

あなたが辞書に渡したいならばしかし、あなたは前に**を付加することで、キーワード引数にそれを解凍することができます辞書そのもの。これは、上記のコードのように、キーワード引数にa='123'の辞書を解凍します。

Python文字列と文字列形式の方法については、hereをお読みください。

関連する問題