Python-为什么反斜杠出现两次?

发布于 2021-02-02 23:22:54

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

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

为什么?

关注者
0
被浏览
129
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你们看到的是代表的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返回字符串的表示形式时,它将起到安全的作用,转义所有反斜杠(即使它们不会成为转义序列的一部分),这就是您所看到的。但是,字符串本身仅包含单个反斜杠。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看