在Python Raw字符串的上下文中
我的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'\\'
'\\\\'
为什么\\
呢 为什么输出in5
和6
不同?
r
和repr()
一样不一样吗?
还请说明string
和的内部表示形式,raw strings
相同或不同。
-
您正在将原始字符串文字
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
在字符串)。