是否有Python等效于Ruby的字符串插值?
是否有Python等效于Ruby的字符串插值?
以下是 Ruby 代码示例:
name = "Spongebob Squarepants" puts "Who lives in a Pineapple under the sea? \n#{name}."
对我来说,成功的 Python 字符串连接看起来似乎有点冗长。
admin 更改状态以发布 2023年5月23日
\n\nPython 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中可以使用“%”运算符进行字符串插值。第一个操作数是要插值的字符串,第二个可以有不同的类型,包括“映射”,将字段名称映射到要插值的值。这里我使用本地变量字典“locals()”来将字段名“name”映射到其作为本地变量的值。最近的Python版本使用“.format()”方法的相同代码将如下所示:
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"))