在打字时,她说,\'#34;不要""在python shell中为什么要打印'她说,"不要"'

时间:2015-09-01 01:08:36

标签: python

直接在python shell中输入。

"she said, \"don't\""

然后按Enter,结果将是:

'she said, "don\'t"'

为什么前一个斜线消失而后一个斜线出现在n和'之间? 结果不应该是'she said, \"don't\"'

3 个答案:

答案 0 :(得分:2)

这只是字符串对象的内部表示。用于包含字符串的引用类型是任意的 - 它可以是单引号',双引号,"或三引号'''""" 。 Python通常更喜欢用单引号括起字符串,所以有时它会这样做。但是,实际字符串的内容是相同的。您可以使用print()来查看此内容。

>>> "she said, \"don't\""
'she said, "don\'t"'
>>> print("she said, \"don't\"")
she said, "don't"
>>> print('she said, "don\'t"')
she said, "don't"

答案 1 :(得分:2)

当您在Python解释器中输入"she said, \"don't\""之类的内容时,Python会构造一个String对象。您在此处的输入称为"字符串文字"。

可以通过多种方式构造相同的字符串对象,字符串文字只是其中之一,您可以use different string literal to construct the same string

" String对象"不记得它是如何构建的。这就是为什么输出应该是字符串对象的表示,可能与它的构造方式不同。当您的输入和输出相同时,请考虑巧合。

<强>更新

&#34;字符串对象&#34;的表示都是有效的字符串文字。您可以在此处复制输出,并将其直接输入到输入。

由于Python选择使用单引号字符串文字来表示输出,因此双引号不受限制,因此不需要转义。但是,所有单引号都需要转义。这是单引号和双引号字符串文字之间最显着的差异。

答案 2 :(得分:0)

您输入的字符串的实际内容为she said, "don't"。如果你做print("she said, \"don't\""),那就是你会得到的。引号和斜杠只是让你看到字符串的非模糊表示。