我的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'\\'
'\\\\'
为什么\\
?为什么5
和6
的输出有所不同?
r
和repr()
相同并不相同?
另请说明string
和raw strings
的内部表示相同或不同。
答案 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
)。