Python 3:使用%s和.format()

Python 3:使用%s和.format(),python,string,string-formatting,Python,String,String Formatting,我终于在2.x代码中从%切换到了.format()字符串格式操作符,以便将来更容易迁移到3.x。令人惊讶的是,Py3中不仅保留了%-样式的格式,而且在标准库代码中广泛使用。这似乎是合乎逻辑的,因为编写'(%s)“%variable比'({}').format(variable)要短一些,可能更容易理解。但我还是有点怀疑。在代码中使用这两种方法是否合适(pythonic?)? 谢谢。Python 3.2文档说,%最终将消失 由于str.format()是非常新的,许多Python代码仍然使用%

我终于在2.x代码中从
%
切换到了
.format()
字符串格式操作符,以便将来更容易迁移到3.x。令人惊讶的是,Py3中不仅保留了
%
-样式的格式,而且在标准库代码中广泛使用。这似乎是合乎逻辑的,因为编写
'(%s)“%variable
'({}').format(variable)
要短一些,可能更容易理解。但我还是有点怀疑。在代码中使用这两种方法是否合适(pythonic?)?
谢谢。

Python 3.2文档说,
%
最终将消失

由于
str.format()
是非常新的,许多Python代码仍然使用
%
操作人员但是,由于这种旧式格式将 最终从语言中删除,
str.format()
通常应该 被使用

但是,这个句子从3.3中删除了,这可能表明事实并非如此。有些对话也暗示了同样的事情

截至目前:

%运算符也可用于字符串格式设置。它解释 左参数非常类似于要使用的sprintf()样式的格式字符串 应用于正确的参数,并返回由 这是一个格式化操作

另请参见

“%s”现在是“{}”,因此,不要在希望将变量添加到字符串中的位置添加%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
出于说明原因,输出忽略引用

“这似乎是新的方式”Python3.+“
将起作用,而不是“%”;,“看起来不错”,但“看起来不实用。”“

非常感谢您的回复,弗拉德。事实上,他们在文档中这样说,但即使是3.x的标准库也充斥着类似
%
的格式:(似乎没有太多摆脱
%
的迹象。无论如何,坚持
.format()
似乎是正确的:)这句话在python 3.3文档中被删除,出于好奇,它仍然存在于3.2中,旧版本会被弃用吗?我刚刚测试了
bar=“baz”;打印(“foo%s”%bar)
,它在Python 3.4.3(以及2.7.3和2.6.6)中仍然有效。
%的格式化速度稍快一些。但是,如果您正在进行非常重要的字符串格式化,那么您可能还有其他更重要的问题。