Ok на этой ссылке показывает последнюю строку вывода, которая имеет "вокруг всего, кроме третьего предложения", и я не знаю почему. Это беспокоило меня в самом начале и считало, что это просто странная ошибка, но ее "лишний кредит", поэтому теперь мне еще любопытно.
Это связано с тем, что форматировщик %r
печатает аргумент в форме, которую вы можете использовать в исходном коде, что для строк означает, что оно ограничено кавычками и экранировано. Для булевых значений это просто True
или False
. Чтобы напечатать строку как есть, вместо этого используйте %s
.
>>> print '%s' % '"Hello, you\'re"'
"Hello, you're"
>>> print '%r' % '"Hello, you\'re"'
'"Hello, you\'re"'
Функция python repr()
, вызываемая интерполяцией директивы форматирования %r
, имеет приблизительный эффект печати объектов так, как они будут отображаться в исходном коде.
Существует несколько способов форматирования строк в источнике python, используя одиночные или двойные кавычки, с экранами обратной косой черты или как необработанные строки, простые строки с одной строкой или многострочные строки (в любой комбинации). Python выбирает только два способа форматирования строк, как одиночные или двойные кавычки, одиночные строки с экранами вместо сырых.
Python делает грубую попытку выбрать минимальный формат с небольшим уклоном в пользу версии с одиночной кавычкой (так как это будет на несколько клавиш на большинстве клавиатур).
Правила очень просты. Если строка содержит одиночную кавычку, но не содержит двойных кавычек, python печатает строку, как это было бы в источнике python, если бы она была двойным кавычком, иначе она использует одинарные кавычки.
Некоторые примеры для иллюстрации. Примечание. Для простоты все входы используют тройные кавычки, чтобы избежать экранов обратной косой черты.
>>> ''' Hello world '''
' Hello world '
>>> ''' "Hello world," he said. '''
' "Hello world," he said. '
>>> ''' You don't say? '''
" You don't say? "
>>> ''' "Can't we all just get along?" '''
' "Can\'t we all just get along?" '
>>>