Pythonでは、次のように書くのは面倒です。
print "foo is" + bar + '.'
Pythonでこのようなことができますか?
print "foo is #{bar}."
Python 3.6以降には変数補間があります-f
を文字列の先頭に追加します:
f"foo is {bar}"
Python以下(Python 2-3.5)のバージョンでは、str.format
変数を渡すには:
# Rather than this:
print("foo is #{bar}")
# You would do this:
print("foo is {}".format(bar))
# Or this:
print("foo is {bar}".format(bar=bar))
# Or this:
print("foo is %s" % (bar, ))
# Or even this:
print("foo is %(bar)s" % {"bar": bar})
Python 3.6 持つでしょう リテラル文字列補間 usingf-strings:
print(f"foo is {bar}.")
Python 3.6には f-stringsが導入されました :
_print(f"foo is {bar}.")
_
古い答え:
バージョン3.2以降Pythonには _str.format_map
_ があり、これは locals()
または globals()
を使用すると、高速に実行できます。
_Python 3.3.2+ (default, Feb 28 2014, 00:52:16)
>>> bar = "something"
>>> print("foo is {bar}".format_map(locals()))
foo is something
>>>
_
Python Essential Reference から次のテクニックを学びました。
>>> bar = "baz"
>>> print "foo is {bar}.".format(**vars())
foo is baz.
これは、書式設定文字列で多くの変数を参照する場合に非常に便利です。
"{x}{y}".format(x=x, y=y)
や"%(x)%(y)" % {"x": x, "y": y}
など)と比較してください。"{}{}".format(x, y)
、"{0}{1}".format(x, y)
および"%s%s" % (x, y)
)。>>> bar = 1
>>> print "foo is {}.".format(bar)
foo is 1.
変数を2回参照することで繰り返す必要がないため、このアプローチが好まれます。
alpha = 123 print '答えは{alpha}'です。format(** locals())
Rubyではこれには大きな違いがあります。
print "foo is #{bar}."
そしてこれらはPythonで:
print "foo is {bar}".format(bar=bar)
Ruby=の例では、bar
は評価済み
Pythonの例では、bar
は辞書のキーにすぎません
変数を使用している場合は、ほぼ同じ動作をしますが、一般的に、RubyからPythonへの変換はそれほど単純ではありません
そのとおり。私の意見では、Pythonは文字列のフォーマット、置換、演算子を強力にサポートしています。
これは役に立つかもしれません:
http://docs.python.org/library/stdtypes.html#string-formatting-operations