2013-08-27 4 views
3

Я знаю двух способов форматирования строки:Вставка строковых переменных в печать в питона

  1. print 'Hi {}'.format(name)
  2. print 'Hi %s' % name

Каковы относительные Дис/преимущества использования либо?

Я также знаю, как может эффективно работать с несколькими параметрами, как

print 'Hi %s you have %d cars' % (name, num_cars) 

и

print 'Hi {0} and {1}'.format('Nick', 'Joe') 
+0

возможно дубликат [Python строки форматирования:% против .format] (http://stackoverflow.com/questions/5082452/python-string-formatting-vs-format) – alecxe

+0

Там же еще другой способ сделать это, что может вас заинтересовать, используя класс ['string.Template'] (http://docs.python.org/2/library/string.html?highlight=template#string.Template). Я считаю, что синтаксис более читабельен, чем простой '%' formating и большинство 'format'. Поскольку это класс, вы также можете получить собственные специализированные подклассы. – martineau

ответ

1

Существует на самом деле не какая-то разница между этими двумя строковыми форматирования решений.

{} обычно называют «новым стилем» и %s является "old string formatting", но old style formatting isn't going away any time soon.

Новое форматирование стиля не поддерживается везде, хотя еще:

logger.debug("Message %s", 123) # Works 
logger.debug("Message {}", 123) # Does not work. 

Тем не менее, я бы рекомендовал использовать .format. Это более полнофункционально, но в любом случае нет большой разницы.

Это в основном вопрос личного вкуса.

0

Я использую «старый стиль», поэтому я могу рекурсивно строить строки со строками. Рассмотрим ...

'%s%s%s' 

... это представляет любую возможную комбинацию строк, которую вы можете иметь. Когда я создаю выходную строку из N-размерных входов, это позволяет мне рекурсивно спускаться по каждому корню и возвращаться.

Примером использования является мое тестирование поискового запроса (обеспечение качества). Начиная с %s Я могу сделать любой возможный запрос.

/.02

Смежные вопросы