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,它代表reprUsing %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()

源代码字符串 '\'"'"\'\"" 是等效对象的两种表示形式。