如何使用Python轻松地将变量扩展为字符串?

时间:2011-01-30 01:21:32

标签: python string variables idioms expand

这样做的好习惯是什么:

而不是: print "%s is a %s %s that %s" % (name, adjective, noun, verb)

我希望能够做一些事情: print "{name} is a {adjective} {noun} that {verb}"

4 个答案:

答案 0 :(得分:21)

"{name} is a {adjective} {noun} that {verb}".format(**locals())
  • locals()提供对当前命名空间的引用(作为字典)。
  • **locals()将该字典解压缩为关键字参数(f(**{'a': 0, 'b': 1})f(a=0, b=1))。
  • .format()"the new string formatting",这可以做更多的事情(例如{0.name}作为第一个位置参数的name属性。)

或者,string.template(如果您想避免冗余的{'name': name, ...}字典文字,请再次使用本地人)。

答案 1 :(得分:5)

使用string.Template

>>> from string import Template
>>> t = Template("$name is a $adjective $noun that $verb")
>>> t.substitute(name="Lionel", adjective="awesome", noun="dude", verb="snores")
'Lionel is a awesome dude that snores'

答案 2 :(得分:5)

从Python 3.6开始,您现在可以使用称为f字符串的这种语法,它与9年前的建议非常相似?

print(f"{name} is a {adjective} {noun} that {verb}")

f字符串或格式化的字符串文字将使用其使用范围内的变量或其他有效的Python表达式。

print(f"1 + 1 = {1 + 1}")  # prints "1 + 1 = 2"

答案 3 :(得分:3)

对于python 2,请执行:

print name,'is a',adjective,noun,'that',verb

对于python 3添加parens:

print(name,'is a',adjective,noun,'that',verb)

如果需要将其保存为字符串,则必须与+运算符连接,并且必须插入空格。 print在所有,处插入一个空格,除非参数末尾有一个尾随逗号,在这种情况下它会放弃换行符。

保存到字符串var:

result = name+' is a '+adjective+' '+noun+' that '+verb