当我创建一个包含反斜杠的字符串时,它们会被复制:
>>> my_string = "why\does\it\happen?"
>>> my_string
'why\\does\\it\\happen?'
为什么?
最佳答案
您所看到的是由 my_string
方法创建的 __repr__()
的表示。如果你打印它,你可以看到你实际上有一个反斜杠,就像你想要的那样:
>>> print(my_string)
why\does\it\happen?
下面的字符串包含三个字符,而不是四个:
>>> 'a\\b'
'a\\b'
>>> len('a\\b')
3
您可以使用
repr()
内置函数获取字符串(或任何其他对象)的标准表示形式:>>> print(repr(my_string))
'why\\does\\it\\happen?'
Python 将字符串中的反斜杠表示为
\\
,因为反斜杠是一个转义字符 - 例如,\n
表示换行符,\t
表示制表符。这有时会给您带来麻烦:
>>> print("this\text\is\not\what\it\seems")
this ext\is
ot\what\it\seems
因此,需要有一种方法来告诉 Python 您确实想要两个字符
\n
而不是换行符,并且您可以通过转义反斜杠本身来实现这一点,并使用另一个:>>> print("this\\text\is\what\you\\need")
this\text\is\what\you\need
当 Python 返回字符串的表示时,它会安全运行,转义所有反斜杠(即使它们不会成为转义序列的一部分),这就是您所看到的。但是,字符串本身只包含单个反斜杠。
有关 Python 字符串文字的更多信息,请访问:Python 文档中的 String and Bytes literals。
关于python - 为什么反斜杠出现两次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24085680/