当前位置: 代码迷 >> python >> python3中打印的格式r(repr)
  详细解决方案

python3中打印的格式r(repr)

热度:86   发布时间:2023-06-16 10:21:00.0
>>>print('You say:{0:r}'.format("i love you"))
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    print('You say:{0:r}'.format("i love you"))
ValueError: Unknown format code 'r' for object of type 'str'

我只是在 python2 中使用%r(repr()) ,它应该在 python3.5 中工作。 为什么?

此外,我应该使用什么格式?

您正在寻找的称为转换标志。 应该像这样指定

>>> print('you say:{0!r}'.format("i love you"))
you say:'i love you'

引用 Python 3 的,

当前支持三种转换标志: '!s'调用str()值, '!r'调用repr()'!a'调用ascii()

请注意,Python 2 仅支持!s!r 根据 Python 2 的,

当前支持两种转换标志: '!s'调用str()值, '!r'调用repr()


在 Python 2 中,你可能做过类似的事情

>>> 'you say: %r' % "i love you"
"you say: 'i love you'"

但即使在 Python 2(也在 Python 3 中),您也可以使用!rformat编写相同的内容,如下所示

>>> 'you say: {!r}'.format("i love you")
"you say: 'i love you'"

引用 例子,

替换%s%r

 >>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2') "repr() shows quotes: 'test1'; str() doesn't: test2"

在python3的f-string格式中,还可以使用:

print(f"You say:{'i love you'!r}")
You say:'i love you'
print(f'You say:{"i love you"!r}')
You say:'i love you'

请注意,两者都返回用单引号括起来的“我爱你”。