On Wed, 22 Aug 2007 21:33:19 -0400 Eric Smith <[EMAIL PROTECTED]> wrote:
> Ron Adam wrote: ... > > That would mean there is no way to pass a brace to a __format__ method. > > No way using string.format, correct. You could pass it in using the > builtin format(), or by calling __format__ directly. But you're > correct, for the most part if string.format doesn't accept it, it's not > practical. What about: >>> "{0:{lb}{1}{lb}}".format(ShowSpec(), 'abc', lb='{', rb='}') '{abc}' Ugly, but better than nothing. > > I think it's actually easier to do it recursively and not put limits on > > where format specifiers can be used or not. > > But then you'd always have to worry that some replaced string looks like > something that could be interpreted as a field, even if that's not what > you want. > > What if "{value}" came from user supplied input? I don't think you'd > want (or expect) any string you output that contains braces to be expanded. Not a problem with recursion: $ echo $(echo $(pwd)) /home/ajwade $ a='echo $(pwd)' $ echo $a echo $(pwd) $ echo $($a) $(pwd) $ echo $($($a)) bash: $(pwd): command not found The key is to do substitution only once at each level of recursion; which is what a naive recursive algorithm would do anyway. And I'd do the recursive substitution before even starting to parse the field: it's simple and powerful. -- Andrew _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com