summaryrefslogtreecommitdiff
path: root/Doc/library/string.rst
diff options
context:
space:
mode:
authorEric Smith <eric@trueblade.com>2009-04-22 00:53:01 +0000
committerEric Smith <eric@trueblade.com>2009-04-22 00:53:01 +0000
commitf17e2ce19461ff3b38c5dc66cb41202beb50bf87 (patch)
treee1a50da39732ae41c31e09e5b10af78af59b99b2 /Doc/library/string.rst
parent45e839d8d7b534e36cc57aa650554a8f9b097e1e (diff)
downloadcpython-f17e2ce19461ff3b38c5dc66cb41202beb50bf87.tar.gz
Merged revisions 71788 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r71788 | eric.smith | 2009-04-21 20:47:00 -0400 (Tue, 21 Apr 2009) | 1 line Documentation for issue 5237, auto-numbered format fields. Contributed by Terry J. Reedy. ........
Diffstat (limited to 'Doc/library/string.rst')
-rw-r--r--Doc/library/string.rst24
1 files changed, 15 insertions, 9 deletions
diff --git a/Doc/library/string.rst b/Doc/library/string.rst
index 29bf160c58..517e209b5b 100644
--- a/Doc/library/string.rst
+++ b/Doc/library/string.rst
@@ -196,21 +196,26 @@ The grammar for a replacement field is as follows:
.. productionlist:: sf
replacement_field: "{" `field_name` ["!" `conversion`] [":" `format_spec`] "}"
- field_name: (`identifier` | `integer`) ("." `attribute_name` | "[" `element_index` "]")*
+ field_name: arg_name ("." `attribute_name` | "[" `element_index` "]")*
+ arg_name: (`identifier` | `integer`)?
attribute_name: `identifier`
element_index: `integer`
conversion: "r" | "s" | "a"
format_spec: <described in the next section>
-In less formal terms, the replacement field starts with a *field_name*, which
-can either be a number (for a positional argument), or an identifier (for
-keyword arguments). Following this is an optional *conversion* field, which is
+In less formal terms, the replacement field starts with a *field_name* that specifies
+the object whose value is to be formatted and inserted
+into the output instead of the replacement field.
+The *field_name* is optionally followed by a *conversion* field, which is
preceded by an exclamation point ``'!'``, and a *format_spec*, which is preceded
-by a colon ``':'``.
-
-The *field_name* itself begins with either a number or a keyword. If it's a
-number, it refers to a positional argument, and if it's a keyword it refers to a
-named keyword argument. This can be followed by any number of index or
+by a colon ``':'``. These specify a non-default format for the replacement value.
+
+The *field_name* itself begins with an *arg_name* that is either either a number or a
+keyword. If it's a number, it refers to a positional argument, and if it's a keyword,
+it refers to a named keyword argument. If the numerical arg_names in a format string
+are 0, 1, 2, ... in sequence, they can all be omitted (not just some)
+and the numbers 0, 1, 2, ... will be automatically inserted in that order.
+The *arg_name* can be followed by any number of index or
attribute expressions. An expression of the form ``'.name'`` selects the named
attribute using :func:`getattr`, while an expression of the form ``'[index]'``
does an index lookup using :func:`__getitem__`.
@@ -219,6 +224,7 @@ Some simple format string examples::
"First, thou shalt count to {0}" # References first positional argument
"Bring me a {}" # Implicitly references the first positional argument
+ "From {} to {}" # Same as "From {0] to {1}"
"My quest is {name}" # References keyword argument 'name'
"Weight in tons {0.weight}" # 'weight' attribute of first positional arg
"Units destroyed: {players[0]}" # First element of keyword argument 'players'.