Последняя строка этой программы на Python использует оба "и", но я не знаю почему

1

Ok на этой ссылке показывает последнюю строку вывода, которая имеет "вокруг всего, кроме третьего предложения", и я не знаю почему. Это беспокоило меня в самом начале и считало, что это просто странная ошибка, но ее "лишний кредит", поэтому теперь мне еще любопытно.

  • 2
    Вы смотрели на фактическое содержание?
Теги:

2 ответа

7
Лучший ответ

Это связано с тем, что форматировщик %r печатает аргумент в форме, которую вы можете использовать в исходном коде, что для строк означает, что оно ограничено кавычками и экранировано. Для булевых значений это просто True или False. Чтобы напечатать строку как есть, вместо этого используйте %s.

>>> print '%s' % '"Hello, you\'re"'         
"Hello, you're"
>>> print '%r' % '"Hello, you\'re"'                        
'"Hello, you\'re"'
  • 1
    Вы не должны отвечать на домашние вопросы напрямую ...
  • 2
    Обычно я не знаю, но ответ не так очевиден, поэтому я решил объяснить свой ответ четко.
Показать ещё 6 комментариев
1

Функция 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?" '
>>> 
  • 0
    Это более информативно, чем принятый ответ, и фактически касается бита «вокруг всего, кроме третьего предложения».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню