1. ホーム
  2. python

[解決済み] Rubyの文字列補間に相当するPythonはありますか?

2022-03-15 05:19:19

質問

Rubyの例です。

name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."

Pythonの文字列連結が成功すると、私には一見冗長に見えます。

どのように解決するのですか?

Python 3.6で追加された リテラル文字列補間 Rubyの文字列補間のようなものです。 そのバージョンのPython(2016年内にリリース予定)からは、"f-strings"に式を含めることができるようになります、例えば。

name = "Spongebob Squarepants"
print(f"Who lives in a Pineapple under the sea? {name}.")

3.6 より前のバージョンでは、これに最も近いのは

name = "Spongebob Squarepants"
print("Who lives in a Pineapple under the sea? %(name)s." % locals())

% 演算子は 文字列補間 をPythonで作成しました。 最初のオペランドは補間される文字列で、2番目のオペランドはフィールド名と補間される値を対応させる "mapping" を含む様々な型を持つことができます。 ここでは、ローカル変数の辞書を使いました。 locals() というフィールド名でマッピングします。 name をローカル変数としてその値に変換します。

を使った同じコードです。 .format() 最近のPythonのバージョンでは、次のようになります。

name = "Spongebob Squarepants"
print("Who lives in a Pineapple under the sea? {name!s}.".format(**locals()))

また string.Template クラスがあります。

tmpl = string.Template("Who lives in a Pineapple under the sea? $name.")
print(tmpl.substitute(name="Spongebob Squarepants"))