在Python Raw字符串的上下文中

Gri*_*han 10 python string rawstring

我的Python版本是:

~$ python --version  
Python 2.6.6
Run Code Online (Sandbox Code Playgroud)

我尝试在Python中使用(我想要显示所有内容):

1: \用作转义序列

>>> str('Let\'s Python')       
"Let's Python"
Run Code Online (Sandbox Code Playgroud)

2: \用作转义序列

>>> 'Let\'s Python'             
"Let's Python"
Run Code Online (Sandbox Code Playgroud)

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

>>> print 'Let\'s Python'       
Let's Python
Run Code Online (Sandbox Code Playgroud)

4:它的Python是一个原始字符串

>>> repr('Let\'s Python')      
'"Let\'s Python"'
Run Code Online (Sandbox Code Playgroud)

[ 问题 ]

5:Python原始字符串

>>> print r'Let\'s Python'    
Let\'s Python
Run Code Online (Sandbox Code Playgroud)

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

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

>>> r'\\'
'\\\\'
Run Code Online (Sandbox Code Playgroud)

为什么\\?为什么输出56不同?
r 并且repr()一样不一样?
另请说明内部表示,string 并且raw strings相同或不同.

Mar*_*ers 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'
Run Code Online (Sandbox Code Playgroud)

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

>>> r'String with \n escape ignored' == 'String with \\n escape ignored'
True
Run Code Online (Sandbox Code Playgroud)

口译员正在用repr()这些价值回馈给我们; 生成python值的表示形式:

>>> print 'String'
String
>>> print repr('String')
'String'
>>> 'String'
'String'
>>> repr('String')
"'String'"
Run Code Online (Sandbox Code Playgroud)

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

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

>>> print repr(1)
1
>>> repr(1)
'1'
Run Code Online (Sandbox Code Playgroud)

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