У мене є рядок такої форми
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')