On Sat, Nov 21, 2015 at 1:52 AM, Ervin Hegedüs <airw...@gmail.com> wrote: > Python has a good string formatter, eg. I can do this: > > s = "{who} likes {what}" > d = {'who': "Adam", 'what': "ants"} > s.format(**d) > > result: > 'Adam likes ants' > > Is it possible, and if yes, how to resolve the placeholders names > in string? > > There is a know method: > > d1 = {'who1': "Adam", 'what1': "ants"} > try: > s.format(**d1) > except KeyError: > print("keyword missing") > > (gives 'keyword missing' as result). > > > But is there any other (direct) way, which keywords exists in > string?
I think what you're asking for can be done using format_map with a custom mapping object: >>> class IdentiMap: ... def __init__(self): ... self.keys = [] ... def __getitem__(self, key): ... self.keys.append(key) ... >>> m = IdentiMap() >>> "{who} likes {what}".format_map(m) 'None likes None' >>> m.keys ['who', 'what'] Does that help? ChrisA -- https://mail.python.org/mailman/listinfo/python-list