formato r (repr) de impressão em python3
>>>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'
Eu só uso %r(repr())
em python2, e deve funcionar em python3. 5. Porquê?
além disso, que formato devo usar?
5
Author: thefourtheye, 2015-10-26
1 answers
O que procuras chama-se bandeira de conversão. E isso deve ser especificado assim
>>> print('you say:{0!r}'.format("i love you"))
you say:'i love you'
Citando a documentação oficial do Python 3 ,
Três sinalizadores de conversão de são atualmente suportados:
'!s'
que chamastr()
sobre o valor,'!r'
que chamarepr()
e'!a'
que chamaascii()
.
Por favor, note que o Python 2 suporta apenas !s
e !r
. De acordo com a documentação oficial do Python 2 ,
Existem actualmente duas opções de conversão: {[4] } que chama
str()
sobre o valor, e'!r'
que chamarepr()
.
No Python 2, podias ter feito algo como
>>> 'you say: %r' % "i love you"
"you say: 'i love you'"
Mas mesmo em Python 2( também em Python 3), você pode escrever o mesmo com !r
com format
, assim
>>> 'you say: {!r}'.format("i love you")
"you say: 'i love you'"
, Citando o exemplo de documentação oficial,
Substituição de
%s
e%r
:>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2') "repr() shows quotes: 'test1'; str() doesn't: test2"
8
Author: thefourtheye, 2015-10-26 02:44:40