了解%r和%s

时间:2016-06-13 16:29:56

标签: python string python-2.7

我最近开始学习python并且不了解%r和%s。两者有什么区别?类比将不胜感激。我试图解决问题,看看两者是如何工作的。我创建了简单的代码来理解python中的字符串,但它似乎不起作用。下面的代码有什么问题,正确的做法是什么?您还可以逐步显示您在CORRECT代码中所做的事情吗?感谢您帮助业余爱好者学习python。

formatter = "%r %r %r %r"
print "Here are the days: formatter" % ('Monday','Tuesday','Wednesday','Thursday')

2 个答案:

答案 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输出,或者您希望保存输出以便稍后进行评估。