[Python-Dev] PEP 3101: Advanced String Formatting

Georg Brandl g.brandl at gmx.net
Sun Apr 30 20:00:49 CEST 2006


Zachary Pincus wrote:
> I'm not sure about introducing a special syntax for accessing 
> dictionary entries, array elements and/or object attributes *within a 
> string formatter*... much less an overloaded one that differs from 
> how these elements are accessed in "regular python".

Yes, I also think that's a bad idea.
>> Compound names are a sequence of simple names seperated by
>> periods:
>>>> "My name is {0.name} :-\{\}".format(dict(name='Fred'))

And these escapes are also a bad idea. As it is, the backslashes stay in the
string, but it is not obvious to newcomers whether \{ is a general string
escape. The "right" way to do it would be "\\{", but that's becoming rather
longly. Why not use something like "{{"?
>> Compound names can be used to access specific dictionary entries,
>> array elements, or object attributes. In the above example, the
>> '{0.name}' field refers to the dictionary entry 'name' within
>> positional argument 0.
>> Barring ambiguity about whether .name would mean the "name" attribute 
> or the "name" dictionary entry if both were defined, I'm not sure I 
> really see the point. How is:
> d = {last:'foo', first:'bar'}
> "My last name is {0.last}, my first name is {0.first}.".format(d)
>> really that big a win over:
> d = {last:'foo', first:'bar'}
> "My last name is {0}, my first name is {1}.".format(d['last'], d 
> ['first'])

Or even:
d = {last:'foo', first:'bar'}
"My last name is {last}, my first name is {first}.".format(**d)
Georg


More information about the Python-Dev mailing list

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