在Python 3.7 shell中,当转义字符串时,会得到一些意外的结果,请参见下面的示例。在python 2.7 shell中获得了相同的结果。
Python文档中的快速阅读似乎表明转义可以在字符串中完成,但似乎并未说它不能在shell中使用。 (或者我错过了)。
有人可以解释为什么转义似乎没有按预期进行吗
示例一:
输入:
>>> "I am 6'2\" tall"
输出:
'I am 6\'2" tall'
在>>> print("I am 6'2\" tall")
返回(我所期望的):
I am 6'2" tall
(我也想知道反斜杠在意外结果中如何最终落在6号后面?)
另一个示例:
输入:
>>> "\tI'm tabbed in."
输出:
"\tI'm tabbed in."
在print()内部时,该选项卡将替换为适当的选项卡。 (无法显示,因为stackoverflow似乎删除了我在代码块内使用的行前面的制表符/空格)。
答案 0 :(得分:2)
交互式外壳将为您提供上一个命令的返回值的表示形式。它使用repr()
方法为您提供该值,该方法试图给出该值的有效源代码表示;也就是说,您可以按原样复制并粘贴到代码中。
print
会将字符串的内容打印到控制台,而不管它是否是有效的源代码。
答案 1 :(得分:2)
基本上,当您在终端中直接输入字符串时,终端会调用字符串的 repr 魔术方法。在您通过字符串调用print
的同时,它还会在其上调用__str__
方法:
s = "I am 6'2\" tall"
s.__repr__()
'\'I am 6\\\'2" tall\''
s.__str__()
'I am 6\'2" tall'
详细了解这两种方法之间的比较:str vs. repr 和那个SO Difference between __str__ and __repr__?问题。
在未来的python冒险中万事如意。