среда, 5 сентября 2012 г.

Имитация функции sprintf в python

Иногда требуется в python сделать форматированный вывод в строку. В Си подобный функционал был реализован через функцию sprintf. В python аналогичного эффекта можно достичь при помощи оператора %.

Например,
mystring = "%s %d\t%3.2f %s" % ("Values:",42,56.89732,"tot")
print mystring
даст
Values 42 56.90 tot

Следует отметить, однако, что оператор % отсутствует в стандарте 3-ей версии python, где его функциональность заменена методом str.format(). Подробнее о том, как его использовать, можно прочитать в документации. Приведу только то, как с его помощью реализуется выше приведённый пример:
mystring = "{0!s} {1:d}\t{2:3.2f} {3!s}".format("Values:", 42, 56.89732, "tot")

Источник: [Tutor] sprintf-like functionality in Python