我有一些关于理解原始字符串和repr()的问题。 所以我在shell中尝试了这个:
a=r'\\'
>>> len(a)
2
>>> str(a)
'\\\\'
>>> repr(a)
"'\\\\\\\\'"
我理解r,反斜杠被视为文字。但是,repr(a)来的原因是什么?' \\\\#'"结果呢?
答案 0 :(得分:2)
您正在查看交互式解释器中的repr
结果,该结果会打印出repr
的结果。因此,您会看到repr(repr(a))
,其中包含八个反斜杠。
答案 1 :(得分:1)
r'\\'
是一个由\
和\
组成的双字符字符串。 repr()
将其表示为Python字符串文字。由于反斜杠在字符串文字中启动转义序列,因此它们本身需要进行转义以准确再现原始字符串,因此repr()
返回'\\\\'
- 由六个字符组成的字符串。最后,当显示这个字符串时,Python交互式shell本身使用repr()
,它选择双引号以避免必须转义它试图表示的字符串中的'
,并再次转义每个反斜杠,导致你所看到的。
r'\\'
:\\
repr(r'\\')
:'\\\\'
repr(repr(r'\\'))
:"'\\\\\\\\'"
答案 2 :(得分:0)
字符串的repr
是完全重现字符串所需的文字。由于\
是文字中的转义字符,因此您需要将其加倍以在结果字符串中获取单个字符。
在不使用print
的情况下键入表达式时,会自动获得repr
。因此\
加倍,即repr
的{{1}}。