Отформатируйте строку, в которой есть дополнительные фигурные скобки - PullRequest
13 голосов
/ 06 февраля 2012

У меня есть файл LaTeX, который я хочу прочитать с помощью Python 3 и отформатировать значение в результирующую строку.Что-то вроде:

...
\textbf{REPLACE VALUE HERE}
...

Но я не смог выяснить, как это сделать, поскольку новый способ форматирования строк использует нотацию {val} и, поскольку это документ LaTeX, существует множестводополнительные {} символов.

Я пробовал что-то вроде:

'\textbf{This and that} plus \textbf{{val}}'.format(val='6')

но я получаю

KeyError: 'This and that'

1 Ответ

20 голосов
/ 06 февраля 2012

Метод 1, что я и сделал бы: используйте string. Шаблон .

>>> from string import Template
>>> Template(r'\textbf{This and that} plus \textbf{$val}').substitute(val='6')
'\\textbf{This and that} plus \\textbf{6}'

Способ 2: добавить дополнительные скобки. Можно сделать это с помощью регулярного выражения.

>>> r'\textbf{This and that} plus \textbf{val}'.format(val='6')
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
KeyError: 'This and that'
>>> r'\textbf{{This and that}} plus \textbf{{{val}}}'.format(val='6')
'\\textbf{This and that} plus \\textbf{6}'

(возможно). Способ 3: использовать пользовательскую строку. Формататор. У меня не было причин делать это самостоятельно, поэтому я не знаю достаточно деталей, чтобы быть полезными.

...