在字符串内评估

时间:2011-03-12 12:35:43

标签: python

在python中有类似Rubys "Hello #{userNameFunction()}"的内容吗?

3 个答案:

答案 0 :(得分:9)

在Python中,您将使用字符串插值

"Hello %s" % user_name_function()

或字符串格式化

"Hello {0}".format(user_name_function())

后者在Python 2.6或更高版本中可用。

另请注意,按照惯例,您不要将CamelCase用于Python中的函数名称(CamelCase仅用于类名称 - 请参阅PEP 8)。

答案 1 :(得分:2)

Python的字符串插值最接近你想要的。

最常见的形式是:

>>> "Hello %s" % userNameFunction()
'Hello tm1brt'

这使用元组按字符串中所需的顺序提供数据。

但是,你也可以使用dict并在字符串中使用有意义的数据:

>>> "Hello %(name)s" % {'name' : userNameFunction()}
'Hello tm1brt'

答案 2 :(得分:1)

在Python 2.4+中,您可以使用Templateclass中的stringmodule来执行以下操作:

from string import Template

def user_name_function(): return "Dave"

s = Template('Hello $s')
print s.substitute(s=user_name_function())
# 'Hello Dave'

print s.substitute({'s': user_name_function()})
# 'Hello Dave'