У меня есть следующий код
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Я хотел бы получить вывод:
Print percent % in sentence and not have it break.
Что на самом деле происходит:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
python
escaping
python-2.7
jondykeman
источник
источник
\%
? Это было мое предположение, я удивлен, обнаружив, что%%
вместо этого - кажется довольно нелогичным.% i
означает «десятичное представление целого числа, дополненное слева пробелами.\%
это было бы на самом деле,\\%
когда написано в обычном коде.<escape><escape>
это типичный образец, который я видел, и, как ни\
крути, это самый распространенный побег.\
если тебе пришлось печатать\\%
? Вы обязаны требовать экранирования через повторение специальных символов, если специальные символы также не являются специальными в зависимости от обстоятельств.Ответы:
источник
print('%s%%' % 100)
печатает100%
. Ноprint('%%')
печатает%%
. Похоже, вам не нужно избегать знаков%, если вы не делаете замены.%
метод на самом деле не рекомендуется (в Python 3) в пользуstr.format()
: docs.python.org/2/library/stdtypes.html#str.format%
метод не рекомендуется в Python 3.6. Он будет по-прежнему поддерживаться вместо его сходства с c, c ++ и т. Д.,str.format()
И f-строки предпочтительнее, но не применяются.%
знак. Просто%
сделаюВ качестве альтернативы, начиная с Python 2.6, вы можете использовать новое форматирование строки (описано в PEP 3101 ):
что особенно удобно, поскольку ваши струны становятся более сложными.
источник
format
эти дни.попробуйте использовать
%%
для печати знака%.источник
Вы не можете выборочно убежать
%
, так как%
всегда имеет особое значение в зависимости от следующего символа.В документации Python, в нижней части второй таблицы в этом разделе, говорится:
Поэтому вы должны использовать:
(обратите внимание на точное изменение кортежа в качестве аргумента
%
)Не зная о вышесказанном, я бы сделал:
со знанием, которое вы, очевидно, уже имели.
источник
Если шаблон форматирования был прочитан из файла, и вы не можете гарантировать, что содержимое удваивает знак процента, то вам, вероятно, придется определить символ процента и программно решить, является ли он заполнителем или нет. Затем синтаксический анализатор должен также распознавать последовательности, подобные
%d
(и другим буквам, которые могут использоваться), но также%(xxx)s
и т. Д.Аналогичная проблема наблюдается с новыми форматами - текст может содержать фигурные скобки.
источник
Если вы используете Python 3.6 или новее, вы можете использовать f-строку :
источник
Я пробовал разные способы напечатать заголовок подзаговора, посмотрите, как они работают. Другое дело, когда я использую латекс.
Он работает с '%%' и 'string' + '%' в типичном случае.
Если вы используете латекс, он работал, используя 'string' + '\%'
Итак, в типичном случае:
Примеры заголовков с%
Если мы используем латекс:
Мы получаем это: Пример заголовка с% и латексом
источник