我最近观看了一个Python教程,其中作者一直在处理各种Python字符串格式表达式,我对此感到震惊:
为什么Python中有这么多的字符串格式?
printf
的方法(顺便提一下,在各种来源中被引用为已弃用并计划删除,但在标准Python文档(!)中有大量示例)。 C#
派生.format()
处理字符串的方式。formatted f-string literal
,称为f-string
。string
模块,但这似乎对我来说太过分了。当我发现here时,前两种上述技术会有所不同并相互重叠,具体视使用情况而定。
最后但并非最不重要的是,这种方法的富裕程度与import this
的Python声明之一是否相矛盾?
应该有一个 - 最好只有一个 - 显而易见的方法。
如果我错了,请纠正我,但这在某种程度上本身就是“非Pythonic”。
读者是否会就此提出自己的想法,最好还是提供一些相关的例子?
答案 0 :(得分:2)
这就是进化的样子。
"我们需要字符串连接"。
不确定。 "hello" + ''' ''' + 'world'
或者,如果您愿意,' '.join(['hello', 'world'])
"但是
"found " + str(var) + " matches"
有点笨拙。我听说Lisp有princ
......?"
哦,好的,这里:'found %i matches' % var
(......时间过去了......)
嗯,你是对的,好的,在这里。"我听说你正在改造整个语言并将
'found {0} matches'.format(var)
是的,让我们摆脱那种不直观的复杂性。我们不希望模数成为特殊情况,它不够优雅。
"感谢。但是......等等,有很多代码使用旧语法,当你比较它们时,新语法真的很笨拙。"
哎呀。我们可以减少笨拙。有一些语法糖! f'found {var} matches'
还有更多来自哪里!
"嗯,我不知道。模数仍然更容易输入。"
你让我疯了。好的,如果你愿意,你可以玩它。但不要说我没有警告过你。
答案 1 :(得分:-2)
https://docs.python.org/2/whatsnew/2.6.html#pep-3101-advanced-string-formatting
看起来它是关于使字符串格式化功能更强大。
从上面的链接: “在Python 3.0中,%运算符由更强大的强大的字符串格式化方法format()补充。对str.format()方法的支持已经被反向移植到Python 2.6。”