Python中使用格式化输出时单引号和双引号有何区别?

6

我正在学习《笨办法学Python》,在进行以下操作时:

formatter = "%r %r %r %r"

print formatter % (
    "I had this thing.",
    "That you could up right.",
    "But it didn't sing.",
    "So I said goodnight"
)

输出结果为:
'I had this thing.' 'That you could up right.' "But it didn't sing." 'So I said goodnight'

但我不确定为什么第三个字符串有双引号。

3个回答

8

"a"'a'是相同的字符串,没有区别。

第三个字符串包含一个撇号,因此无法表示为'But it didn't sing.',因为这会在didn后结束字符串并引发SyntaxError

如果您想用单引号表示字符串,可以这样做:

"'"

或者

'\''

双引号也是一样的:

'"'

或者

"\""

如果你有一个包含引号的字符串,你可以选择其中一个:

'"\'"

或者

"\"'"

2
由于第三个字符串将是'But it didn't sing' - 这会因为三个撇号而导致语法错误,而且,如果逻辑上修复(在末尾再加一个'可以消除错误),你将被卡在两个字符串上-1.'But it didn'和2.'t sing',这是不正确的。
所以回答您的问题,""在字符串中提供完全相同的功能,但在可能引起语法错误的情况下使用,例如在英语中像didn't、couldn't或类似的单词。

就此而言,'But it didn''t sing'是有效的语法,但它并不符合我们的要求,因为Python将相邻的字符串文字视为单个字符串。如果字符串文字之间有空格,也会发生这种情况。 - PM 2Ring

1
第三个字符串中有一个字符',所以使用"来表示它。尝试从字符串#3中删除',您将看到表示形式更改为'string'。这些字符串是相同的,只是它们的表示不同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接