你所看到的是表示 of my_string
由其创建的__repr__() https://docs.python.org/3/reference/datamodel.html#object.__repr__方法。如果打印它,您可以看到实际上有单个反斜杠,就像您想要的那样:
>>> print(my_string)
why\does\it\happen?
下面的字符串有three其中的字符,不是四个:
>>> 'a\\b'
'a\\b'
>>> len('a\\b')
3
您可以使用以下命令获取字符串(或任何其他对象)的标准表示形式repr() https://docs.python.org/3/library/functions.html#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你really想要两个角色\n
而不是换行符,您可以通过使用另一个转义反斜杠本身来实现这一点:
>>> print("this\\text\is\what\you\\need")
this\text\is\what\you\need
当 Python 返回字符串的表示形式时,它会安全地转义所有反斜杠(即使它们不会成为转义序列的一部分),这就是您所看到的。但是,字符串本身仅包含单个反斜杠。
有关 Python 字符串文字的更多信息可以在以下位置找到:字符串和字节文字 https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals在 Python 文档中。