Skip to main content
 首页 » 编程设计

Python:为什么 %r 不能准确表示\"versus\' 上的原始数据

2025年05月04日29webabcd

我一直在学习 Zed 的 LPTHW,在完成第 10 课后我一直在使用转义字符。在使用 %r 时我遇到了这个,我不知道为什么会这样(我太新了任何形式的编程/编码都会受到伤害):

test = "10'5\"" 
test_2 = '10\'5"' 
 
print "%r" % test 
print "%r" % test_2  

当我运行它时,我得到:

'10\'5"' 
'10\'5"' 

我很困惑。我原以为我会得到以下输出:

"10'5\"' 
'10\'5"' 

我的理解是 %r 会返回与其写入方式相同的字符串,但它似乎通过将\向左移动将其转换为 test_2。

我是不是漏掉了什么?

谢谢。

请您参考如下方法:

It was my understanding that %r would return the string identical to how it is written

你的理解有误。 Python 不“记住”字符串在源代码中是如何编写的;对解释器来说重要的是它包含字符:

10'5" 

打印该字符串的 repr 将使用 Python 认为最适合其内容的引号类型。由于这两个字符串包含相同的字符,它们由 repr 打印(因此,由 %r 格式字符串打印)。