次のエラーが発生しました。どうすれば修正できますか?Python:トリプルダブルクォート文字列形式
KeyError例外: '' プロセスは、名前で渡さなければならない終了コード変数をフォーマットする名前付き1
s = """
a b c {a}
""".format({'a':'123'})
print s
次のエラーが発生しました。どうすれば修正できますか?Python:トリプルダブルクォート文字列形式
KeyError例外: '' プロセスは、名前で渡さなければならない終了コード変数をフォーマットする名前付き1
s = """
a b c {a}
""".format({'a':'123'})
print s
s = """
a b c {a}
""".format_map({'a':'123'})
私は 'format_map'について知りませんでした。 – Wondercricket
マッピングが通常のdictの場合、 'format_map'を使うのはあまり意味がありません。 – wim
@wimそれは正しいですが、もしあなたがdictを持っていたら、なぜそれを解凍し、 'format_map'を使うことができるときに' format'に渡すのですか? – MSeifert
を終了:あなたはデータの辞書を提供している場合
>>> 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
を展開することができます。もしPython 3.6を使っているのなら、f-stringsを使うこともできます。 –
これは、データが有効範囲内の名前に由来する場合にのみ選択できます。 – wim
あなたは間違って文字列のformat
方法を使用している:あなたが名前.format(a=123)
で引数を渡すか、辞書を期待format_map
を使用する必要があります。 format
では、文字列内の名前を置き換えるときにキーワード引数を渡す必要があります。
あなたのケースでメソッドを使用する正しい形式は、次のようになります。
s = """
a b c {a}
""".format(a='123')
print s
あなたが辞書に渡したいならばしかし、あなたは前に**
を付加することで、キーワード引数にそれを解凍することができます辞書そのもの。これは、上記のコードのように、キーワード引数にa='123'
の辞書を解凍します。
Python文字列と文字列形式の方法については、hereをお読みください。
'format'はキーワード引数を取ります。 – user2357112
または 'dict'、' ** {'a': '123'} ' – Wondercricket