raw format string in string format method?
Peter Otten
__peter__ at web.de
Thu Feb 28 10:41:54 EST 2013
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))
More information about the Python-list
mailing list