Python中的GStrings

时间:2009-04-21 06:41:27

标签: python gstring

Groovy有一个GStrings的概念。我可以写这样的代码:

def greeting = 'Hello World'
println """This is my first program ${greeting}"""

我可以从String中访问变量的值。

我怎样才能在Python中执行此操作?

- 感谢

5 个答案:

答案 0 :(得分:5)

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

对于实际的替换,有很多方法可以做到(unpythonic!):

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()))

答案 1 :(得分:3)

d = {'greeting': 'Hello World'}
print "This is my first program %(greeting)s" % d

答案 2 :(得分:1)

你不能完全......

我认为你真正得到的最接近的是使用标准的基于%的替换,例如:

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

话虽如此,从Python 2.6开始,有一些奇特的新类可以通过不同的方式实现:查看the string documentation for 2.6,特别是从8.1.2开始,了解更多。

答案 3 :(得分:1)

如果你想做模板,你可能想看看猎豹。它可以让你完全按照你的说法,相同的语法和所有内容完成。

http://www.cheetahtemplate.org/

答案 4 :(得分:1)

在Python 2.6+中你可以这样做:

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

查看PEP 3101