为什么反斜杠出现两次?

为什么反斜杠出现两次?

当我创建一个包含反斜杠的字符串时,它们会被复制:

>>> my_string = "why\does\it\happen?">>> my_string'why\\does\\it\\happen?'

为什么?


肥皂起泡泡
浏览 863回答 2
2回答

人到中年有点甜

你看到的是表象的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字符串文字的更多信息,请参见:String和Bytes文字在Python文档中。

慕村225694

如零比雷埃夫斯的回答解释,使用这样的单个反斜杠(在原始字符串文字是个坏主意。但是还有一个额外的问题:在将来,使用一个未定义的转义序列将是一个错误,比如\d,而不是字面上的反斜杠,后面跟着d..所以,与其幸运的是你的字符串碰巧使用了\d而不是\t所以它做了你想做的事,它绝对不会做你想做的事。从3.6开始,它已经引发了一个DeprecationWarning虽然大多数人看不到这些。它会变成SyntaxError在未来的版本中。在包括C在内的许多其他语言中,使用不启动转义序列的反斜杠意味着反斜杠被忽略。在包括Python在内的几种语言中,不启动转义序列的反斜杠就是文字反斜杠。在某些语言中,为了避免混淆语言是C类还是Python类,以及\Foo工作但\foo如果反斜杠不起作用,则不启动转义序列的反斜杠是非法的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python