Я хотел бы сделать некоторую простую математику, пока я делаю строковое форматирование. Например
N = {'number':3}
four = '{number:d + 1}'.format(**N)
Это не работает (конечно). Есть ли способ достичь этого, о котором я не знаю?
Благодарю!
"Есть ли способ достичь этого, о котором я не знаю?" Если под "этим" вы подразумеваете кодирование некоторой математической логики в строке формата с использованием str.format, то нет - не то, что я знаю. Однако, если вы используете язык шаблонов, вы можете выразить все такие вещи, как это.
Есть миллиард различных вариантов шаблонов языков в Python, поэтому вместо того, чтобы пытаться сказать, что лучше, я позволю вам решить. См. Эту статью из вики-страницы Python: http://wiki.python.org/moin/Templating
Один из моих любимых - Jinja2, хотя это, вероятно, слишком велико для того, о чем вы говорите.
Вот пример того, как выполнить то, что вам нужно с Jinja2:
N = { 'd' : 3 }
four = Template(u'number:{{ d + 1 }}').render(**N)
Основным преимуществом системы шаблонов, таких как Jinja2, является то, что она позволяет хранить шаблоны как файлы отдельно от вашей логики управления приложениями, так что вы можете поддерживать логику представления/представления для своей программы таким образом, чтобы ограничивать или запрещать побочные эффекты от выполнения презентации.
Примерно так же, как вы можете получить, следует использовать позиционные аргументы вместо аргументов ключевого слова:
four='{0:d}'.format(N['number']+1)
или более короткая старая школа:
four='%d'%(N['number']+1)
Какая у вас цель?