9

我的 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'\\'
'\\\\'

为什么\\?为什么输出56不同?
rrepr()一样不一样吗?
还请解释stringraw strings的内部表示相同或不同。

4

1 回答 1

13

您将原始字符串文字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()一个字符串时,结果本身就是一个字符串,所以它有两组引号。其他"引号标记结果的开始和结束,其中repr()包含是 python 字符串的字符串表示形式String

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

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

1整数表示为字符串'1'(字符串中的1字符)。

于 2012-12-02T13:39:25.327 回答