Вопрос-Ответ

How can I selectively escape percent (%) in Python strings?

Как я могу выборочно экранировать процент (%) в строках Python?

У меня есть следующий код

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
Переведено автоматически
Ответ 1
>>> test = "have it break."
>>> selectiveEscape = "Print percent %% in sentence and not %s" % test
>>> print selectiveEscape
Print percent % in sentence and not have it break.
Ответ 2

В качестве альтернативы, начиная с Python 2.6, вы можете использовать новое форматирование строк (описано в PEP 3101):

'Print percent % in sentence and not {0}'.format(test)

это особенно удобно, поскольку ваши строки становятся более сложными.

Ответ 3

попробуйте использовать %% для печати знака % .

Ответ 4

Вы не можете выборочно экранировать %, так как % всегда имеет особое значение в зависимости от следующего символа.

В документации Python, в нижней части второй таблицы в этом разделе, говорится:

'%'        No argument is converted, results in a '%' character in the result.

Поэтому вам следует использовать:

selectiveEscape = "Print percent %% in sentence and not %s" % (test, )

(пожалуйста, обратите внимание на ожидаемое изменение на tuple в качестве аргумента для %)

Не зная об этом выше, я бы сделал:

selectiveEscape = "Print percent %s in sentence and not %s" % ('%', test)

с учетом знаний, которые у вас, очевидно, уже были.

python python-2.7