Petri Lehtinen <pe...@digip.org> added the comment:

> PEP 3101 defines format strings as intermingled character data and markup. 
> Markup defines replacement fields and is delimited by braces. Only after 
> markup is extracted does the PEP talk about interpreting the contents of the 
> markup.
> 
> So, given "{0[a}b]}" the parser first parses out the character data and the 
> markup. The first piece of markup is "{0[a}". That gives a syntax error 
> because it's missing a right bracket.
> 
> I realize you'd like the parser to find the markup as the entire string, but 
> that's not how I read the PEP.

This is a good point, although the support of further replacement
fields inside format_specifiers requies the parser to count matching
braces, if the markup is to be extracted before its interpreted.

But disallowing unmathced '}' inside the replacement field doesn't
still explain why this shouldn't work:

    '{0[!]!r}'.format({'!': 'foo'})

I'm completely fine with disallowing '}', but it seems to me that
there's absolutely no reason to not parse the element_index and later
fields correctly with respect to '!' and ':'.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue12014>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to