繁体   English   中英

转义在Python Shell中的工作方式是否有所不同? (与文件中的代码相比)

[英]Does escaping work differently in Python shell? (Compared to code in file)

在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似乎删除了我在代码块内使用的行前面的制表符/空格)。

交互式外壳将为您提供上一个命令的返回值的表示形式 它使用repr()方法为您提供该值,该方法试图给出该值的有效源代码表示形式 即,您可以按原样复制并粘贴到代码中的内容。

print ,另一方面输出字符串到控制台的内容,而不考虑是否将是有效的源代码或没有。

基本上,当您按原样在终端中输入字符串时,终端会调用字符串的repr magic方法。 在您通过字符串调用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以及__str__和__repr__之间的 SO 差异? 题。

祝您未来的python冒险好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM