Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python原始字符串的上下文中_Python_String_Rawstring - Fatal编程技术网

在Python原始字符串的上下文中

在Python原始字符串的上下文中,python,string,rawstring,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\

我的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:它是一个原始字符串

>>> repr('Let\'s Python')      
'"Let\'s Python"'
>>> print r'Let\'s Python'    
Let\'s Python
[问题]

5:Python原始字符串

>>> repr('Let\'s Python')      
'"Let\'s Python"'
>>> print r'Let\'s Python'    
Let\'s Python
6:这一点,我不明白以下几点:

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

>>> r'\\'
'\\\\'
为什么
\\
?为什么
5
6
中的输出不同?
r
repr()
是相同的还是不同的?

另外,请解释
字符串
原始字符串
的内部表示相同或不同

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

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

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

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

谢谢Martijn!…虽然我仍然不明白为什么打印忽略转义的r'字符串
打印忽略转义的r'字符串单个``,@GrijeshChauhan:现在在不使用
r
的情况下尝试一下(不要更改任何其他内容)。这个
\n
变成了一个换行符。另一个区别是:
len(r'\n')
len('\n')
。第一个是两个字符,一个是
\
反斜杠和一个
n
,另一个是一个字符,换行符。谢谢@MartijnPieters。有没有
原始报告(r“太多\\”)
将参数打印回完全相同的函数,包括
r'前缀?输出或
repr()`不可读。
len()
binascii
解决方法一点也不有趣。@MarcH不,没有。只有一个规范表示法。