我终于从切换%
到.format()
字符串格式化操作在我的2.x的代码,以使其更容易迁移在未来到3.x。 这是一个有点出人意料地发现,不仅%
样式的格式仍然PY3,但它被广泛用于标准库代码。 这似乎是合乎逻辑的,因为写'(%s)' % variable
是有点短,也许比更容易理解'({})'.format(variable)
。 但我还是怀疑。 它是正确的(Python的?)使用的代码两种方法? 谢谢。
Answer 1:
Python的3.2文件说, %
最终会消失。
http://docs.python.org/3.2/tutorial/inputoutput.html#old-string-formatting
由于
str.format()
是相当新的,大量的Python代码仍然使用%
运算符。 但是,由于格式的这个老风格将最终从语言中删除,str.format()
一般应使用。
但作为@regilero说 , 这句话是从3.3消失了 ,这可能表明,它实际上并不是这样。 有一些谈话这里暗示了同样的事情。
作为Python的3.4段落7.1.1规定:
%运算符也可以用于字符串格式化。 这将左参数解释为类似于sprintf() - 被应用到正确的参数样式的格式字符串,并返回此格式化操作产生的字符串。
另见的Python 3.4 4.7.2 printf风格的字符串格式化。
Answer 2:
“%s”为现在的“{}”,所以insted的添加%s与替换它的{},你会想将变量添加到字符串。
def main():
n="Python 3.+"
l="looks nice"
f="does not look practical."
print("This seems to be the new way {}".format(n)\
+ "will be working, rather than the ' % ',{} but {}".format(l,f))
main()
#In comparison to just injecting the variable
输出无视他们是出于说明原因引号
“这似乎是新路‘的Python 3 +’,将工作,而不是“%;,‘看起来不错’,但是‘看起来并不实用。’”
文章来源: Python 3: using %s and .format()