Двойные кавычки в строчном представлении
Этот фрагмент:
formatter = "%r %r %r %r"
print formatter % (
"I had this thing.",
"That you could type up right.",
"But it didn't sing.",
"So I said goodnight."
)
при запуске печатает эту строку:
'I had this thing.' 'That you could type up right.' "But it didn't sing." 'So I said goodnight.'
Почему "But it didn't sing."
попал в двойные кавычки, когда остальные три элемента были в одинарных кавычках?
(Этот код взят из Learn Python the Hard Way Exercise 8.)
Ответы
Ответ 1
Python умный; он будет использовать двойные кавычки для строк, которые содержат одиночные кавычки при создании представления, чтобы минимизировать escape-последовательности:
>>> 'no quotes'
'no quotes'
>>> 'one quote: \''
"one quote: '"
Добавьте туда двойную кавычку, и она вернется к одинарным кавычкам и сбежит с какими-либо одиночными кавычками:
>>> 'two quotes: \'\"'
'two quotes: \'"'