在Python Raw字符串的上下文中

发布于 2021-01-29 15:58:24

我的Python版本是:

~$ python --version  
Python 2.6.6

我在Python中尝试了以下操作(我想展示所有内容):

1: \用作转义序列

>>> str('Let\'s Python')       
"Let's Python"

2: \用作转义序列

>>> 'Let\'s Python'             
"Let's Python"

3:str()并打印为值而不是类型

>>> print 'Let\'s Python'       
Let's Python

4:其Python原始字符串

>>> repr('Let\'s Python')      
'"Let\'s Python"'

[ 问题 ]

5:Python原始字符串

>>> print r'Let\'s Python'    
Let\'s Python

6:这,我不明白以下几点:

>>> r'Let\'s Python'            
"Let\\'s Python"

>>> r'\\'
'\\\\'

为什么\\呢 为什么输出in56不同?
rrepr()一样不一样吗?
还请说明string 和的内部表示形式,raw strings相同或不同。

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

    您正在将原始字符串文字r''与字符串表示形式混淆。有一个很大的不同。repr()并且r'' 一样的东西。

    r''原始字符串文字会像普通的字符串文字一样产生一个字符串,只是它如何处理转义码。产生的结果仍然是python字符串。您可以使用原始字符串文字或普通字符串文字生成相同的字符串:

    >>> r'String with \n escape ignored'
    'String with \\n escape ignored'
    >>> 'String with \\n escape ignored'
    'String with \\n escape ignored'
    

    当不使用r''原始字符串文字时,我必须将斜杠加倍以使其转义,否则它将被解释为换行符。使用r''语法时,我不必转义它,因为它根本不会解释转义码\n。的
    输出 ,所得到的Python字符串 ,是完全一样的:

    >>> r'String with \n escape ignored' == 'String with \\n escape ignored'
    True
    

    解释器正在repr()将这些值回传给我们。python值的 表示形式 产生:

    >>> print 'String'
    String
    >>> print repr('String')
    'String'
    >>> 'String'
    'String'
    >>> repr('String')
    "'String'"
    

    注意repr()结果如何包括引号。当我们呼应只是repr()一个字符串,结果是 自己 一个字符串,所以它有 2
    套引号。其他"引号标注的结果的开始和结束repr(),并包含 是蟒蛇串的字符串表示String

    因此r''产生 python字符串的语法repr()是一种产生代表python值的字符串的方法。repr()也适用于其他python值:

    >>> print repr(1)
    1
    >>> repr(1)
    '1'
    

    1整数被表示为一个字符串'1'(字符1在字符串)。



知识点
面圈网VIP题库

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

去下载看看