[英]Escape sequence inconsistency in Python
我使用的是Python 3,我想看看原始/真实表示与使用单引号和双引号转义序列的字符串表示之间的区别,因此我创建了以下脚本:
raw = "%r" % "\'\""
str = "%s" % "\'\""
print(raw)
print(str)
print(str)返回(如预期):
'"
现在我希望print(raw)返回:
'\'\"'
但是它返回:
'\'"'
为什么在print(raw)语句中仅存在一个反斜杠,而不应该存在两个反斜杠,因为这将反映我已解析为格式化字符串的值? 我为这个愚蠢的问题感到抱歉。
r
不代表raw
,代表repr
。 使用%r
在对象上调用repr()
。 引用repr()
doc :
此函数尝试返回一个字符串,该字符串在传递给eval()时将产生具有相同值的对象
源代码字符串'\\'"'
和"\\'\\""
是等效对象的两种表示形式。
...打印(原始)...
不。 “ r”代表“表示形式”,而不是“原始”。 但是,字符串字面量的编写方式一经编译就丢失,并且无论如何都无法检索。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.