Li *_*nan 11 python string format python-3.x
>>>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'
Run Code Online (Sandbox Code Playgroud)
我只是%r(repr())在python2中使用,它应该在python3.5中工作.为什么?
此外,我应该使用什么格式?
the*_*eye 17
您正在寻找的是转换标志.这应该像这样指定
>>> print('you say:{0!r}'.format("i love you"))
you say:'i love you'
Run Code Online (Sandbox Code Playgroud)
引用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'"
Run Code Online (Sandbox Code Playgroud)
但是,即使在Python 2(另在Python 3),你可以写同样具有!r与format,类似这样的
>>> 'you say: {!r}'.format("i love you")
"you say: 'i love you'"
Run Code Online (Sandbox Code Playgroud)
从官方文档中引用示例,
更换
%s并%r:Run Code Online (Sandbox Code Playgroud)>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2') "repr() shows quotes: 'test1'; str() doesn't: test2"
小智 8
在python3的f字符串格式化中,您还可以使用:
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'
Run Code Online (Sandbox Code Playgroud)
注意到两者都返回用单引号括起来的“我爱你”。
| 归档时间: |
|
| 查看次数: |
5542 次 |
| 最近记录: |