Python中的gstring

Python中的gstring,python,gstring,Python,Gstring,Groovy有一个gstring的概念。我可以编写如下代码: def greeting = 'Hello World' println """This is my first program ${greeting}""" 我可以从字符串中访问变量的值 如何在Python中实现这一点 -- 谢谢你不能完全 我认为最接近的方法是使用基于标准的替代,例如: greeting = "Hello World" print "This is my first program %s" % greeting

Groovy有一个gstring的概念。我可以编写如下代码:

def greeting = 'Hello World'
println """This is my first program ${greeting}"""
我可以从字符串中访问变量的值

如何在Python中实现这一点

-- 谢谢

你不能完全

我认为最接近的方法是使用基于标准的替代,例如:

greeting = "Hello World"
print "This is my first program %s" % greeting

话虽如此,Python2.6中有一些新奇的类,它们可以以不同的方式实现这一点:请查看,特别是从第8.1.2节开始,以了解更多信息。

如果您试图进行模板制作,您可能希望了解Cheetah。它让你完全按照你所说的去做,同样的语法和所有的东西


在Python 2.6+中,您可以执行以下操作:

"My name is {0}".format('Fred')

签出。

在Python中,必须明确地传递可能变量的字典,不能从字符串中访问任意“外部”变量。但是,可以使用
locals()
函数返回包含本地范围所有变量的字典

对于实际的替换,有很多方法(多么不和谐!)


请注意,带有print的paren是3.0 newness;在print成为关键字之前,在3.0中,它只是一个与其他任何函数一样的函数,因此它需要paren。这就是为什么您在其他答案中看到没有它们的示例。print(“我的第一个程序;{greeting}.format(**locals()))最后一行给了我一个错误:AttributeError:'str'对象没有属性'format',这是因为您不在3.0上-最后一个示例仅为3.0。Python2.x中的首选选项是第一个示例。Ferdinand-请在答案中添加Python版本说明。Python2.x的使用仍然比3.0广泛得多。@Carl:谢谢你的评论。我添加了版本提示——请注意str.format()实际上是从2.6版开始提供的。
"My name is {0}".format('Fred')
greeting = "Hello World"

# Use this in versions prior to 2.6:
print("My first programm; %(greeting)s" % locals())

# Since Python 2.6, the recommended example is:
print("My first program; {greeting}".format(**locals()))

# Works in 2.x and 3.x:
from string import Template
print(Template("My first programm; $greeting").substitute(locals()))