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 andnot have it break.
Что происходит на самом деле:
selectiveEscape = "Use percent % in sentence and not %s" % test TypeError: %d format: a number is required, notstr
Переведено автоматически
Ответ 1
>>> test = "have it break." >>> selectiveEscape = "Print percent %% in sentence and not %s" % test >>> print selectiveEscape Print percent % in sentence andnot 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)
с учетом знаний, которые у вас, очевидно, уже были.