[docs] [issue19175] Erroneous reference to "integer" in format string grammar

David Chambers report at bugs.python.org
Sun Oct 6 06:14:25 CEST 2013

New submission from David Chambers:

I first raised this issue on Stack Overflow: http://stackoverflow.com/questions/19203194

The [replacement field grammar][1] states that an [integer][2] is a valid field_name, but this is inaccurate:

    >>> '{0}'.format('zero')
    >>> '{0x0}.format('zero')
    KeyError: '0x0'
    >>> '{0o0}.format('zero')
    KeyError: '0o0'
    >>> '{0b0}.format('zero')
    KeyError: '0b0'

This [comment][3] by Eric Smith suggests that the above is the intended behaviour:

> get_integer uses the narrowest possible definition for integer indexes,
> in order to pass all other strings to mappings.

The documentation should be updated to match the actual behaviour. abarnert on Stack Overflow suggested the following change:

    -arg_name          ::=  [identifier | integer]
    +arg_name          ::=  [identifier | digit+]

[1]: http://docs.python.org/2/library/string.html#format-string-syntax
[2]: http://docs.python.org/2/reference/lexical_analysis.html#grammar-token-integer
[3]: http://bugs.python.org/issue8985#msg107705

assignee: docs at python
components: Documentation
messages: 199024
nosy: davidchambers, docs at python
priority: normal
severity: normal
status: open
title: Erroneous reference to "integer" in format string grammar
versions: Python 2.6, Python 2.7, Python 3.1, Python 3.2, Python 3.3, Python 3.4

Python tracker <report at bugs.python.org>

More information about the docs mailing list