У меня есть строка этой формы
s='arbit'
string='%s hello world %s hello world %s' %(s,s,s)
Все% s в строке имеют одно и то же значение (т.е. s). Есть ли лучший способ написать это? (Вместо того, чтобы перечислять s три раза)
%
строковый оператор будет «устарел в Python 3.1 и позже удален» docs.python.org/release/3.0.1/whatsnew/… теперь мне интересно, какой способ является наиболее рекомендуемым для обеспечения совместимости версий и безопасности.
str.format()
. Пример:, query = "SELECT * FROM {named_arg}"; query.format(**kwargs)
где query
- строка формата, а kwargs
- словарь с ключами, соответствующими named_arg
s в строке формата.
{0}
, {1}
, {2}
и так далее соответствуют индексам кортежа 0
, 1
и 2
, соответственно. В качестве альтернативы также можно назвать аргументы (например {named_arg}
) и установить каждый из них в методе форматирования, например:'Hi {fname} {lname}!'.format(fname='John', lname='Doe')