При форматировании строки моя строка может содержать модуль "%"
то, что я не хочу преобразовать. Я могу выйти из строки и изменить каждого "%"
кому: "%%"
как обходное решение.
например,
'Day old bread, 50%% sale %s' % 'today!'
вывод:
'Day old bread, 50% sale today'
Но есть ли какие-либо альтернативы выходу? Я надеялся, что использование dict сделает его так, Python проигнорировал бы любые преобразования неключевого слова.
например,
'Day old bread, 50% sale %(when)s' % {'when': 'today'}
но Python все еще видит первый модуль %
и дает a:
TypeError: not enough arguments for format string
Вы можете (и должны) использовать новую строку .format ()
метод (если у вас есть Python 2.6 или выше):
"Day old bread, 50% sale {0}".format("today")
Руководство можно найти здесь .
В документации также говорится, что старое форматирование %
в конечном итоге будет удалено с языка, хотя это, безусловно, займет некоторое время. Новые методы форматирования намного мощнее, так что это хорошо.
Преобразование «%» в «%%» не является временным решением. Если вы используете форматирование строки, это способ представления знака «%». Если вы этого не хотите, вы всегда можете сделать что-нибудь вроде:
print "Day old bread, 50% sale " + "today"
например. без форматирования.
Обратите внимание, что при использовании конкатенации строк убедитесь, что переменная является строкой (а не, например, None), или используйте str (varName)
. В противном случае вы получите что-то вроде «Невозможно объединить str и NoneType».
Не совсем так - экранирование знаков % - это плата за использование форматирования строк. Вместо этого можно использовать конкатенацию строк: 'Day old bread, 50% sale ' + whichday
, если это поможет...