我最近开始学习python并且不了解%r和%s。两者有什么区别?类比将不胜感激。我试图解决问题,看看两者是如何工作的。我创建了简单的代码来理解python中的字符串,但它似乎不起作用。下面的代码有什么问题,正确的做法是什么?您还可以逐步显示您在CORRECT代码中所做的事情吗?感谢您帮助业余爱好者学习python。
formatter = "%r %r %r %r"
print "Here are the days: formatter" % ('Monday','Tuesday','Wednesday','Thursday')
答案 0 :(得分:0)
您的代码问题是,您没有将formatter
varibale添加到字符串,而是文字字符串。要解决此问题:
formatter = "%r %r %r %r"
print "Here are the days: " + formatter % ('Monday','Tuesday','Wednesday','Thursday')
现在关于%s
和%r
:区别在于,%r
使用__repr__
方法将对象转换为字符串,%s
使用{ {1}}。有关__str__
和__repr__
之间差异的详细信息,您可以查看以下答案:https://stackoverflow.com/a/2626364/5189673
格式化程序只需使用元组的元素,使用它们的__str__
(使用__repr__
)将它们转换为字符串,然后用获取的%r
替换它们字符串。
答案 1 :(得分:0)
在您的示例中,%s
和%r
之间的区别为
>>> print "Here are the days: %s %s %s %s" % ('Monday', ...
Here are the days: Monday Tuesday Wednesday Thursday
VS
>>> print "Here are the days: %r %r %r %r" % ('Monday', ...
Here are the days: 'Monday' 'Tuesday' 'Wednesday' 'Thursday'
注意引号表示%r
示例中的字符串。通常,当您希望输出有效时,使用repr
转换(即%r
)。这可能是因为您希望eval
输出,或者您希望保存输出以便稍后进行评估。