proposal to allow to set the delimiter in str.format to something other than curly bracket

Peter Otten __peter__ at web.de
Mon Apr 4 12:18:08 EDT 2011


Alia Khouri wrote:
> Terry Reedy wrote:
>>> Just double the brackets, just as one doubles '\\' to get '\' in a
>> string.
>>>> >>> "class {0}Model {{ public bool IsModel(){{ returntrue;
>> }}}}".format('My')
>>>> 'class MyModel { public bool IsModel(){ returntrue; } }'
>>>> Indeed, I tried that, but it means I have to double bracket all the
> csharp code which just creates more work for me.

You could automatically convert from a custom format like that in your 
original post:
import re
_lookup = {
 "[[": "{",
 "]]": "}",
 "{": "{{",
 "}": "}}",
}
def _substitute(m):
 return _lookup[m.group()]
def custom_format(template, *args, **kw):
 return (re.compile(r"\[\[|]]|\{|\}")
 .sub(_substitute, template)
 .format(*args, **kw))
code = "class [[0]]Model { public bool IsModel(){ return a[42] || true; } }"
print custom_format(code, "My")


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /