python3中打印的格式r(repr)
Posted
技术标签:
【中文标题】python3中打印的格式r(repr)【英文标题】:format r(repr) of print in python3 【发布时间】:2016-01-25 01:39:44 【问题描述】:>>>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中使用。为什么会这样?
另外,我应该使用什么格式?
【问题讨论】:
【参考方案1】:您要查找的内容称为转换标志。应该这样指定
>>> print('you say:0!r'.format("i love you"))
you say:'i love you'
引用 Python 3 的 official documentation,
目前支持三个转换标志:
'!s'
调用str()
值,'!r'
调用repr()
和'!a'
调用ascii()
。
请注意,Python 2 仅支持 !s
和 !r
。根据 Python 2 的 official documentation,
目前支持两种转换标志:
'!s'
对值调用str()
,'!r'
调用repr()
。
在 Python 2 中,您可能做过类似的事情
>>> 'you say: %r' % "i love you"
"you say: 'i love you'"
但即使在 Python 2 中(也在 Python 3 中),您也可以使用 !r
和 format
编写相同的代码,就像这样
>>> 'you say: !r'.format("i love you")
"you say: 'i love you'"
引用official documentation的例子,
替换
%s
和%r
:>>> "repr() shows quotes: !r; str() doesn't: !s".format('test1', 'test2') "repr() shows quotes: 'test1'; str() doesn't: test2"
【讨论】:
【参考方案2】:在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'
请注意,两者都返回用单引号括起来的“我爱你”。
【讨论】:
以上是关于python3中打印的格式r(repr)的主要内容,如果未能解决你的问题,请参考以下文章