何时在Python中使用%r代替%s?

%s说明符使用转换对象str(),%r使用转换对象repr()

对于某些对象(例如整数),它们产生相同的结果,但repr()特殊之处在于(对于可能的类型)它通常返回有效的Python语法的结果,该结果可用于明确地重新创建其表示的对象。例如,如果您有一个带有结尾字符的字符串,则%s实际上会在新行上显示内容,而%r只会将输出显示为\ n并保持引号完整。

例如

>>> string = "Hello\nworld"
>>> print "Example: %s" % string
Example: Hello
world
>>> print "Example: %r" % string
Example: 'Hello\nworld'

您可以使用第二个表达式实际重新创建对象。