Mam plik LaTeX, który chcę odczytać za pomocą Pythona 3 i sformatować wartość w wynikowym łańcuchu. Coś jak:Formatowanie ciągu zawierającego dodatkowe nawiasy klamrowe
...
\textbf{REPLACE VALUE HERE}
...
Ale nie byłem w stanie dowiedzieć się, jak to zrobić, ponieważ nowy sposób robienia formatowanie ciąg wykorzystuje {val}
notacji i ponieważ jest to dokument LaTeX, istnieje mnóstwo dodatkowych {}
znaków.
Próbowałem coś takiego:
'\textbf{This and that} plus \textbf{{val}}'.format(val='6')
ale mam
KeyError: 'This and that'
Dowolna wskazówka, czy string.Template będzie przestarzałe w przyszłości? Nowe formatowanie python 3 {} wydaje się to obejmować. W przypadku edycji LaTeX szablony są jednak znacznie wygodniejsze. – levesque
@levesque: Cóż, nie jest ono przestarzałe od czasu (w toku) 3.4, i oferuje inną funkcjonalność niż formatowanie '{}', więc myślę, że będzie się utrzymywał przez jakiś czas. – DSM
Prawdopodobnie lepszym sposobem na dodanie dodatkowych nawiasów klamrowych niż użycie regex jest użycie 'str.translate'. 'unformatter = str.maketrans ({'{': '{{', '}': '}}'})', a następnie, aby naprawić dany ciąg, 'goodstring = badstring.translate (unformatter)' (Uwaga: Pytanie dotyczy Pythona 3.x, w wersji 2.x działałoby to tylko z 'unicode', a nie' str', ponieważ tylko 'unicode' obsługuje odwzorowania translacji 1-n.) – ShadowRanger