Helmut Jarausch wrote: > I'd like to print a string with the string format method which uses > {0}, ... > > Unfortunately, the string contains TeX commands which use lots of > braces. Therefore I would have to double all these braces just for the > format method which makes the string hardly readable. > > Is there anything like a "raw" format string and any other means > to circumvent this? > > Many thanks for a hint, > Helmut.
While percent-formatting is probably the way to go here is a hack to replace the braces with custom characters: import string class SwapFormatter(string.Formatter): custom = "<>" braces = "{}" swap = {ord(p): q for p, q in zip(custom + braces, braces + custom)} def format(self, format_string, *args, **kw): format_string = format_string.translate(self.swap) return super().format(format_string, *args, **kw) def parse(self, format_string): return ((t[0].translate(self.swap),) + t[1:] for t in super().parse(format_string)) myformat = SwapFormatter().format print(myformat("<< {} {{<0>}} <2> {<foo>} <1:<width>> >>", "alpha", 42, "gamma", foo="delta", width=5)) -- http://mail.python.org/mailman/listinfo/python-list