在 Python 中,写起来很乏味:
print "foo is" + bar + '.'
我可以在 Python 中做这样的事情吗?
print "foo is #{bar}."
在 Python 中,写起来很乏味:
print "foo is" + bar + '.'
我可以在 Python 中做这样的事情吗?
print "foo is #{bar}."
Python 3.6+ 确实有变量插值 -f
在你的字符串前面加上一个:
f"foo is {bar}"
对于低于此的 Python 版本(Python 2 - 3.5),您可以使用str.format
传入变量:
# Rather than this:
print("foo is #{bar}")
# You would do this:
print("foo is {}".format(bar))
# Or this:
print("foo is {bar}".format(bar=bar))
# Or this:
print("foo is %s" % (bar, ))
# Or even this:
print("foo is %(bar)s" % {"bar": bar})
蟒蛇 3.6会有使用f-strings进行文字字符串插值:
print(f"foo is {bar}.")
Python 3.6引入了 f-strings:
print(f"foo is {bar}.")
老答案:
自 3.2 版以来,Python 与str.format_map
which 一起locals()
或globals()
允许您快速完成:
Python 3.3.2+ (default, Feb 28 2014, 00:52:16)
>>> bar = "something"
>>> print("foo is {bar}".format_map(locals()))
foo is something
>>>
我从Python Essential Reference中学到了以下技术:
>>> bar = "baz"
>>> print "foo is {bar}.".format(**vars())
foo is baz.
当我们想要在格式化字符串中引用许多变量时,这非常有用:
"{x}{y}".format(x=x, y=y)
and "%(x)%(y)" % {"x": x, "y": y}
)进行比较。"{}{}".format(x, y)
,"{0}{1}".format(x, y)
和"%s%s" % (x, y)
)进行比较。>>> bar = 1
>>> print "foo is {}.".format(bar)
foo is 1.
我更喜欢这种方法,因为您不必通过两次引用变量来重复自己:
阿尔法 = 123 print '答案是 {alpha}'.format(**locals())
这在 Ruby 中有很大的不同:
print "foo is #{bar}."
这些在 Python 中:
print "foo is {bar}".format(bar=bar)
在 Ruby 示例中,bar
被评估
在 Python 示例中,bar
只是字典的键
如果您只是使用变量,则行为或多或少是相同的,但总的来说,将 Ruby 转换为 Python 并不是那么简单
是的,一点没错。在我看来,Python 对字符串格式化、替换和运算符有很好的支持。
这可能会有所帮助:
http ://docs.python.org/library/stdtypes.html#string-formatting-operations
几乎所有其他答案都对我不起作用。可能是因为我在 Python3.5 上。唯一有效的是:
print("Foobar is %s%s" %('Foo','bar',))