Python 中的转义序列不一致
Escape sequence inconsistency in Python
我正在使用 Python 3,我想看看 raw/real 表示和对单引号和双引号使用转义序列的字符串表示之间的区别,所以我创建了以下脚本:
raw = "%r" % "\'\""
str = "%s" % "\'\""
print(raw)
print(str)
print(str) returns(如预期):
'"
现在我希望 print(raw) 为 return:
'\'\"'
然而 returns:
'\'"'
为什么 print(raw) 语句中只有一个反斜杠,而不应该有两个,因为这会反映我已解析到格式化字符串中的值?很抱歉这个愚蠢的问题..
... print(raw) ...
没有。 "r" 代表 "representation",而不是 "raw"。但是代码一编译,字符串字面量是怎么写的就丢失了,无论如何都找不回来。
r
不代表raw
,它代表repr
。 Using %r
invokes repr()
on the object. Quoting the repr()
doc:
this function makes an attempt to return a string that would yield an object with the same value when passed to eval()
源代码字符串 '\'"'
和 "\'\""
是等效对象的两种表示形式。
我正在使用 Python 3,我想看看 raw/real 表示和对单引号和双引号使用转义序列的字符串表示之间的区别,所以我创建了以下脚本:
raw = "%r" % "\'\""
str = "%s" % "\'\""
print(raw)
print(str)
print(str) returns(如预期):
'"
现在我希望 print(raw) 为 return:
'\'\"'
然而 returns:
'\'"'
为什么 print(raw) 语句中只有一个反斜杠,而不应该有两个,因为这会反映我已解析到格式化字符串中的值?很抱歉这个愚蠢的问题..
... print(raw) ...
没有。 "r" 代表 "representation",而不是 "raw"。但是代码一编译,字符串字面量是怎么写的就丢失了,无论如何都找不回来。
r
不代表raw
,它代表repr
。 Using %r
invokes repr()
on the object. Quoting the repr()
doc:
this function makes an attempt to return a string that would yield an object with the same value when passed to eval()
源代码字符串 '\'"'
和 "\'\""
是等效对象的两种表示形式。