一些%r格式以双引号而不是单引号开头和结尾

时间:2018-02-04 06:12:47

标签: python

我有两个类似的python代码。

formatter = "%r %r %r %r"
print formatter % (
    "I had this thing",
    "That you could type upright",
    "But it didn't sing",
    "So I said goodnight"
)
print formatter % (
    "hi!",
    "My name is __!",
    "nice to meet you!",
    "thank you!"
)

其他打印为'',但唯一的第三个短语在第一个代码中打印为“但它没有唱歌”。 为什么会导致双引号?

结果:

'我有这件事。' “你可以输入正确的。” “但它没有唱歌。” “所以我说晚安。”

1 个答案:

答案 0 :(得分:0)

好的,因为repr()函数返回对象的可打印表示。我的意思是,在其他短语中,您没有使用单引号字符',因此不需要使用双引号"。这相当于说:

'But it didn\'t sing'

然而,Python解释器将尝试遵循Python Zen(使用最简单的选项)。在这种情况下,最简单的选择是使用双引号并将单引号放入其中。试试这个短语:

"My name is \"__!\""

您会看到它正在打印:'My name is "__!"'(最简单的选项)