message = "hello %s , how are you %s, welcome %s"%("john","john","john")
「john」を 3 回指定するのを避け、代わりに 1 つのフレーズを指定する最も Pythonic な方法は何ですか。
message = "hello %s , how are you %s, welcome %s"%("john","john","john")
「john」を 3 回指定するのを避け、代わりに 1 つのフレーズを指定する最も Pythonic な方法は何ですか。
私は%
フォーマットを使用しません.format
が、多くの利点があります。また、%
フォーマットは当初、置き換えによって削除される予定でしたが.format
、実際にはそうではないようです。
組み込みの文字列書式設定操作の新しいシステムは、
%
文字列書式設定演算子を置き換えます。(ただし、%
演算子は引き続きサポートされています。Python 3.1 で非推奨になり、後で言語から削除されます。)完全なスクープについては、PEP 3101を参照してください。
>>> "hello {name}, how are you {name}, welcome {name}".format(name='john')
'hello john, how are you john, welcome john'
明示的であるため、最初の方法を好みますが、書式設定.format
よりも優れている理由は次のとおりです%
>>> "hello {0}, how are you {0}, welcome {0}".format('john')
'hello john, how are you john, welcome john'
"hello %(name)s , how are you %(name)s, welcome %(name)s" % {"name": "john"}
'hello john, how are you john, welcome john'
これは、フォーマットを使用せずにこれを行う別の方法です。
これも機能します:
"hello %s , how are you %s, welcome %s"%tuple(["john"]*3)
またはさらに短く、明示的な型キャストなし:
"hello %s , how are you %s, welcome %s"%(("john",)*3)
99% の確率で .format() を使用する必要があります
可能性は低いですが、一連の挨拶がある場合は、これを試すことができます。
>>> greetings = ["hello", "how are you", "welcome"]
>>> ", ".join(" ".join((greet, "John")) for greet in greetings)
'hello John, how are you John, welcome John'