[Python-3000] PEP 3101 Updated
Eric Smith
eric+python-dev at trueblade.com
Thu Aug 23 02:10:11 CEST 2007
Ron Adam wrote:
>> I've been re-reading the PEP, in an effort to make sure everything is
>> working. I realized that these tests should not pass. The PEP says
>> that "Format specifiers can themselves contain replacement fields".
>> The tests above have replacement fields in the field name, which is
>> not allowed. I'm going to remove this functionality.
>>
>> I believe the intent is to support a replacement for:
>> "%.*s" % (4, 'how now brown cow')
>>
>> Which would be:
>> "{0:.{1}}".format('how now brown cow', 4)
>>
>> For this, there's no need for replacement on field name. I've taken
>> it out of the code, and made these tests in to errors.
>
> I think it should work myself, but it could be added back in later if
> there is a need to.
>
>
> I'm still concerned about the choice of {{ and }} as escaped brackets.
>
> What does the following do?
>
>
> "{0:{{^{1}}".format('Python', '12')
>>> "{0:{{^{1}}".format('Python', '12')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: unterminated replacement field
But:
>>> "{0:^{1}}".format('Python', '12')
' Python '
> "{{{0:{{^{1}}}}".format('Python', '12')
>>> "{{{0:{{^{1}}}}".format('Python', '12')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown conversion type }
But,
>>> "{{{0:^{1}}".format('Python', '12')
'{ Python '
> class ShowSpec(str):
>
> return spec
>
> ShowSpec("{0:{{{1}}}}").format('abc', 'xyz')
>
>>> ShowSpec("{0:{{{1}}}}").format('abc', 'xyz')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Invalid conversion specification
I think you mean:
ShowSpec("{0:{1}}").format('abc', 'xyz')
But I have some error with that. I'm looking into it.
> "{0}".format('{value:{{^{width}}', width='10', value='Python')
>>> "{0}".format('{value:{{^{width}}', width='10', value='Python')
'{value:{{^{width}}'
More information about the Python-3000
mailing list