这两个字符串之间的区别是什么?

时间:2016-08-06 02:57:20

标签: python string printing string-formatting

我最近开始学习Python,我希望你能帮我解决一直困扰我的问题。我一直在用Learn Python The Hard Way在线学习Python。在练习6中,我遇到了一个问题,我在使用%r字符串格式化操作时产生了两个不同的字符串。当我打印一个字符串时,我得到了带有单引号的字符串(' ')。另一个我得到双引号(" ")。

以下是代码:

x = "There are %d types of people." % 10
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s." % (binary, do_not)

print "I said: %r." % x
print "I also said: %r." % y

第一份印刷声明的结果:

I said: 'There are 10 types of people.'.

第二份印刷声明的结果:

I also said: "Those who know binary and those who don't.".

我想知道为什么其中一个语句的单引号(' ')和另一个语句(" ")的结果。 ] 附:我使用的是Python 2.7。

2 个答案:

答案 0 :(得分:1)

%r正在获取字符串的repr版本:

>>> x = 'here'
>>> print repr(x)
'here'

你看,单引号是通常使用的。但是,在y的情况下,字符串中有一个单引号(撇号)。好吧,通常定义一个对象的repr,以便将其作为代码进行评估等于原始对象。如果Python使用单引号,那将导致错误:

>>> x = 'those who don't'
  File "<stdin>", line 1
    x = 'those who don't'
                   ^
SyntaxError: invalid syntax

所以它改为使用双引号。

答案 1 :(得分:1)

注意这一行 - &gt; do_not = "don't"。此字符串中有一个引号,表示必须转义单引号;否则解释器会在哪里知道字符串开始结束的位置? Python知道使用""来表示这个字符串文字。

如果我们删除',那么我们可以期待围绕字符串的单引号:

do_not = "dont"

>>> I also said: 'Those who know binary and those who dont.'.

Single vs. double quotes in python.