在Python Raw字符串的上下文中

时间:2012-12-02 13:24:37

标签: python string rawstring

我的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的内部表示相同或不同。

1 个答案:

答案 0 :(得分:11)

您将原始字符串文字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的字符串表示形式。

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

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

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