26

我终于在我的 2.x 代码中切换%.format()字符串格式化运算符,以便将来更容易迁移到 3.x。令人惊讶的%是,Py3 中不仅保留了 -style 格式,而且还广泛用于标准库代码中。这似乎是合乎逻辑的,因为写作'(%s)' % variable'({})'.format(variable). 但我仍然有疑问。在代码中使用这两种方法是否合适(pythonic?)?谢谢你。

4

2 回答 2

28

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 样式字符串格式。

于 2013-02-07T14:50:58.157 回答
-1

“%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

出于说明原因,输出忽略它们的报价

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

于 2014-05-18T07:27:55.320 回答