blob: f8d41f9d67668334538bf1b56fd2d8e000ecd791 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001:mod:`string` --- Common string operations
2==========================================
3
4.. module:: string
5 :synopsis: Common string operations.
6
7
8.. index:: module: re
9
Éric Araujo29a0b572011-08-19 02:14:03 +020010**Source code:** :source:`Lib/string.py`
11
12--------------
13
Georg Brandl8ec7f652007-08-15 14:28:01 +000014The :mod:`string` module contains a number of useful constants and
15classes, as well as some deprecated legacy functions that are also
16available as methods on strings. In addition, Python's built-in string
17classes support the sequence type methods described in the
18:ref:`typesseq` section, and also the string-specific methods described
19in the :ref:`string-methods` section. To output formatted strings use
20template strings or the ``%`` operator described in the
21:ref:`string-formatting` section. Also, see the :mod:`re` module for
22string functions based on regular expressions.
23
Georg Brandl8ec7f652007-08-15 14:28:01 +000024String constants
25----------------
26
27The constants defined in this module are:
28
29
30.. data:: ascii_letters
31
32 The concatenation of the :const:`ascii_lowercase` and :const:`ascii_uppercase`
33 constants described below. This value is not locale-dependent.
34
35
36.. data:: ascii_lowercase
37
38 The lowercase letters ``'abcdefghijklmnopqrstuvwxyz'``. This value is not
39 locale-dependent and will not change.
40
41
42.. data:: ascii_uppercase
43
44 The uppercase letters ``'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``. This value is not
45 locale-dependent and will not change.
46
47
48.. data:: digits
49
50 The string ``'0123456789'``.
51
52
53.. data:: hexdigits
54
55 The string ``'0123456789abcdefABCDEF'``.
56
57
58.. data:: letters
59
60 The concatenation of the strings :const:`lowercase` and :const:`uppercase`
61 described below. The specific value is locale-dependent, and will be updated
62 when :func:`locale.setlocale` is called.
63
64
65.. data:: lowercase
66
67 A string containing all the characters that are considered lowercase letters.
Georg Brandld5ad6da2009-03-04 18:24:41 +000068 On most systems this is the string ``'abcdefghijklmnopqrstuvwxyz'``. The
69 specific value is locale-dependent, and will be updated when
70 :func:`locale.setlocale` is called.
Georg Brandl8ec7f652007-08-15 14:28:01 +000071
72
73.. data:: octdigits
74
75 The string ``'01234567'``.
76
77
78.. data:: punctuation
79
80 String of ASCII characters which are considered punctuation characters in the
81 ``C`` locale.
82
83
84.. data:: printable
85
86 String of characters which are considered printable. This is a combination of
87 :const:`digits`, :const:`letters`, :const:`punctuation`, and
88 :const:`whitespace`.
89
90
91.. data:: uppercase
92
93 A string containing all the characters that are considered uppercase letters.
Georg Brandld5ad6da2009-03-04 18:24:41 +000094 On most systems this is the string ``'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``. The
95 specific value is locale-dependent, and will be updated when
96 :func:`locale.setlocale` is called.
Georg Brandl8ec7f652007-08-15 14:28:01 +000097
98
99.. data:: whitespace
100
101 A string containing all characters that are considered whitespace. On most
102 systems this includes the characters space, tab, linefeed, return, formfeed, and
Georg Brandld5ad6da2009-03-04 18:24:41 +0000103 vertical tab.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000104
105
Benjamin Petersonc15205e2008-05-25 20:05:52 +0000106.. _new-string-formatting:
Georg Brandle321c2f2008-05-12 16:45:43 +0000107
Martin Panter00f19ef2016-02-08 01:34:09 +0000108Custom String Formatting
109------------------------
Georg Brandle321c2f2008-05-12 16:45:43 +0000110
Georg Brandl8b10f132009-12-19 17:30:28 +0000111.. versionadded:: 2.6
112
113The built-in str and unicode classes provide the ability
Benjamin Petersonc15205e2008-05-25 20:05:52 +0000114to do complex variable substitutions and value formatting via the
115:meth:`str.format` method described in :pep:`3101`. The :class:`Formatter`
116class in the :mod:`string` module allows you to create and customize your own
117string formatting behaviors using the same implementation as the built-in
Martin Panter00f19ef2016-02-08 01:34:09 +0000118:meth:`~str.format` method.
Georg Brandle321c2f2008-05-12 16:45:43 +0000119
120.. class:: Formatter
121
122 The :class:`Formatter` class has the following public methods:
123
Georg Brandl28046022011-02-25 11:01:04 +0000124 .. method:: format(format_string, *args, **kwargs)
Georg Brandle321c2f2008-05-12 16:45:43 +0000125
Martin Panter00f19ef2016-02-08 01:34:09 +0000126 The primary API method. It takes a format string and
R David Murrayd928b6a2012-08-19 17:57:29 -0400127 an arbitrary set of positional and keyword arguments.
Martin Panter00f19ef2016-02-08 01:34:09 +0000128 It is just a wrapper that calls :meth:`vformat`.
Georg Brandle321c2f2008-05-12 16:45:43 +0000129
130 .. method:: vformat(format_string, args, kwargs)
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000131
Georg Brandle321c2f2008-05-12 16:45:43 +0000132 This function does the actual work of formatting. It is exposed as a
133 separate function for cases where you want to pass in a predefined
134 dictionary of arguments, rather than unpacking and repacking the
Ezio Melottieff174b2012-11-27 19:17:57 +0200135 dictionary as individual arguments using the ``*args`` and ``**kwargs``
R David Murrayd928b6a2012-08-19 17:57:29 -0400136 syntax. :meth:`vformat` does the work of breaking up the format string
137 into character data and replacement fields. It calls the various
Georg Brandle321c2f2008-05-12 16:45:43 +0000138 methods described below.
139
140 In addition, the :class:`Formatter` defines a number of methods that are
141 intended to be replaced by subclasses:
142
143 .. method:: parse(format_string)
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000144
Georg Brandle321c2f2008-05-12 16:45:43 +0000145 Loop over the format_string and return an iterable of tuples
146 (*literal_text*, *field_name*, *format_spec*, *conversion*). This is used
Georg Brandl3b85b9b2010-11-26 08:20:18 +0000147 by :meth:`vformat` to break the string into either literal text, or
Georg Brandle321c2f2008-05-12 16:45:43 +0000148 replacement fields.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000149
Georg Brandle321c2f2008-05-12 16:45:43 +0000150 The values in the tuple conceptually represent a span of literal text
151 followed by a single replacement field. If there is no literal text
152 (which can happen if two replacement fields occur consecutively), then
153 *literal_text* will be a zero-length string. If there is no replacement
154 field, then the values of *field_name*, *format_spec* and *conversion*
155 will be ``None``.
156
157 .. method:: get_field(field_name, args, kwargs)
158
159 Given *field_name* as returned by :meth:`parse` (see above), convert it to
160 an object to be formatted. Returns a tuple (obj, used_key). The default
161 version takes strings of the form defined in :pep:`3101`, such as
162 "0[name]" or "label.title". *args* and *kwargs* are as passed in to
163 :meth:`vformat`. The return value *used_key* has the same meaning as the
164 *key* parameter to :meth:`get_value`.
165
166 .. method:: get_value(key, args, kwargs)
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000167
Georg Brandle321c2f2008-05-12 16:45:43 +0000168 Retrieve a given field value. The *key* argument will be either an
169 integer or a string. If it is an integer, it represents the index of the
170 positional argument in *args*; if it is a string, then it represents a
171 named argument in *kwargs*.
172
173 The *args* parameter is set to the list of positional arguments to
174 :meth:`vformat`, and the *kwargs* parameter is set to the dictionary of
175 keyword arguments.
176
177 For compound field names, these functions are only called for the first
178 component of the field name; Subsequent components are handled through
179 normal attribute and indexing operations.
180
181 So for example, the field expression '0.name' would cause
182 :meth:`get_value` to be called with a *key* argument of 0. The ``name``
183 attribute will be looked up after :meth:`get_value` returns by calling the
184 built-in :func:`getattr` function.
185
186 If the index or keyword refers to an item that does not exist, then an
187 :exc:`IndexError` or :exc:`KeyError` should be raised.
188
189 .. method:: check_unused_args(used_args, args, kwargs)
190
191 Implement checking for unused arguments if desired. The arguments to this
192 function is the set of all argument keys that were actually referred to in
193 the format string (integers for positional arguments, and strings for
194 named arguments), and a reference to the *args* and *kwargs* that was
195 passed to vformat. The set of unused args can be calculated from these
Georg Brandl21946af2010-10-06 09:28:45 +0000196 parameters. :meth:`check_unused_args` is assumed to raise an exception if
Georg Brandle321c2f2008-05-12 16:45:43 +0000197 the check fails.
198
199 .. method:: format_field(value, format_spec)
200
201 :meth:`format_field` simply calls the global :func:`format` built-in. The
202 method is provided so that subclasses can override it.
203
204 .. method:: convert_field(value, conversion)
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000205
Georg Brandle321c2f2008-05-12 16:45:43 +0000206 Converts the value (returned by :meth:`get_field`) given a conversion type
Ezio Melottie11690a2010-07-02 22:17:29 +0000207 (as in the tuple returned by the :meth:`parse` method). The default
R David Murrayd928b6a2012-08-19 17:57:29 -0400208 version understands 's' (str), 'r' (repr) and 'a' (ascii) conversion
209 types.
Georg Brandle321c2f2008-05-12 16:45:43 +0000210
211
212.. _formatstrings:
213
214Format String Syntax
215--------------------
216
217The :meth:`str.format` method and the :class:`Formatter` class share the same
218syntax for format strings (although in the case of :class:`Formatter`,
Eric Smith68f59412010-07-02 21:44:16 +0000219subclasses can define their own format string syntax).
Georg Brandle321c2f2008-05-12 16:45:43 +0000220
221Format strings contain "replacement fields" surrounded by curly braces ``{}``.
222Anything that is not contained in braces is considered literal text, which is
223copied unchanged to the output. If you need to include a brace character in the
224literal text, it can be escaped by doubling: ``{{`` and ``}}``.
225
226The grammar for a replacement field is as follows:
227
228 .. productionlist:: sf
Georg Brandl254c17c2009-09-01 07:40:54 +0000229 replacement_field: "{" [`field_name`] ["!" `conversion`] [":" `format_spec`] "}"
Eric Smith4c074382009-04-22 00:47:00 +0000230 field_name: arg_name ("." `attribute_name` | "[" `element_index` "]")*
Georg Brandl817d9182010-06-27 10:49:23 +0000231 arg_name: [`identifier` | `integer`]
Georg Brandle321c2f2008-05-12 16:45:43 +0000232 attribute_name: `identifier`
Eric Smith271b7e12010-02-25 14:26:33 +0000233 element_index: `integer` | `index_string`
234 index_string: <any source character except "]"> +
Georg Brandle321c2f2008-05-12 16:45:43 +0000235 conversion: "r" | "s"
236 format_spec: <described in the next section>
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000237
Georg Brandl254c17c2009-09-01 07:40:54 +0000238In less formal terms, the replacement field can start with a *field_name* that specifies
Eric Smith4c074382009-04-22 00:47:00 +0000239the object whose value is to be formatted and inserted
240into the output instead of the replacement field.
241The *field_name* is optionally followed by a *conversion* field, which is
Georg Brandle321c2f2008-05-12 16:45:43 +0000242preceded by an exclamation point ``'!'``, and a *format_spec*, which is preceded
Eric Smith4c074382009-04-22 00:47:00 +0000243by a colon ``':'``. These specify a non-default format for the replacement value.
Georg Brandle321c2f2008-05-12 16:45:43 +0000244
Ezio Melottie11690a2010-07-02 22:17:29 +0000245See also the :ref:`formatspec` section.
246
Ezio Melotti1e87da12011-10-19 10:39:35 +0300247The *field_name* itself begins with an *arg_name* that is either a number or a
Eric Smith4c074382009-04-22 00:47:00 +0000248keyword. If it's a number, it refers to a positional argument, and if it's a keyword,
249it refers to a named keyword argument. If the numerical arg_names in a format string
250are 0, 1, 2, ... in sequence, they can all be omitted (not just some)
251and the numbers 0, 1, 2, ... will be automatically inserted in that order.
Éric Araujocd90f792011-09-01 19:57:01 +0200252Because *arg_name* is not quote-delimited, it is not possible to specify arbitrary
253dictionary keys (e.g., the strings ``'10'`` or ``':-]'``) within a format string.
Eric Smith4c074382009-04-22 00:47:00 +0000254The *arg_name* can be followed by any number of index or
Georg Brandle321c2f2008-05-12 16:45:43 +0000255attribute expressions. An expression of the form ``'.name'`` selects the named
256attribute using :func:`getattr`, while an expression of the form ``'[index]'``
257does an index lookup using :func:`__getitem__`.
258
Ezio Melottie11690a2010-07-02 22:17:29 +0000259.. versionchanged:: 2.7
Xiang Zhangfc8ea202018-06-13 10:37:54 +0800260 The positional argument specifiers can be omitted for :meth:`str.format` and
261 :meth:`unicode.format`, so ``'{} {}'`` is equivalent to ``'{0} {1}'``,
262 ``u'{} {}'`` is equivalent to ``u'{0} {1}'``.
Ezio Melottie11690a2010-07-02 22:17:29 +0000263
Georg Brandle321c2f2008-05-12 16:45:43 +0000264Some simple format string examples::
265
Serhiy Storchaka12d547a2016-05-10 13:45:32 +0300266 "First, thou shalt count to {0}" # References first positional argument
267 "Bring me a {}" # Implicitly references the first positional argument
268 "From {} to {}" # Same as "From {0} to {1}"
269 "My quest is {name}" # References keyword argument 'name'
270 "Weight in tons {0.weight}" # 'weight' attribute of first positional arg
271 "Units destroyed: {players[0]}" # First element of keyword argument 'players'.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000272
Georg Brandle321c2f2008-05-12 16:45:43 +0000273The *conversion* field causes a type coercion before formatting. Normally, the
274job of formatting a value is done by the :meth:`__format__` method of the value
275itself. However, in some cases it is desirable to force a type to be formatted
276as a string, overriding its own definition of formatting. By converting the
277value to a string before calling :meth:`__format__`, the normal formatting logic
278is bypassed.
279
280Two conversion flags are currently supported: ``'!s'`` which calls :func:`str`
281on the value, and ``'!r'`` which calls :func:`repr`.
282
283Some examples::
284
285 "Harold's a clever {0!s}" # Calls str() on the argument first
286 "Bring out the holy {name!r}" # Calls repr() on the argument first
287
288The *format_spec* field contains a specification of how the value should be
289presented, including such details as field width, alignment, padding, decimal
Eric Smithcef34092010-02-15 11:55:38 +0000290precision and so on. Each value type can define its own "formatting
Georg Brandle321c2f2008-05-12 16:45:43 +0000291mini-language" or interpretation of the *format_spec*.
292
293Most built-in types support a common formatting mini-language, which is
294described in the next section.
295
296A *format_spec* field can also include nested replacement fields within it.
Martin Panter00f19ef2016-02-08 01:34:09 +0000297These nested replacement fields may contain a field name, conversion flag
298and format specification, but deeper nesting is
299not allowed. The replacement fields within the
Georg Brandle321c2f2008-05-12 16:45:43 +0000300format_spec are substituted before the *format_spec* string is interpreted.
301This allows the formatting of a value to be dynamically specified.
302
Ezio Melottie11690a2010-07-02 22:17:29 +0000303See the :ref:`formatexamples` section for some examples.
Georg Brandle321c2f2008-05-12 16:45:43 +0000304
305
306.. _formatspec:
307
308Format Specification Mini-Language
309^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
310
311"Format specifications" are used within replacement fields contained within a
312format string to define how individual values are presented (see
Ezio Melottie11690a2010-07-02 22:17:29 +0000313:ref:`formatstrings`). They can also be passed directly to the built-in
Georg Brandle321c2f2008-05-12 16:45:43 +0000314:func:`format` function. Each formattable type may define how the format
315specification is to be interpreted.
316
317Most built-in types implement the following options for format specifications,
318although some of the formatting options are only supported by the numeric types.
319
Eric Smithde8b2ac2010-02-25 14:14:35 +0000320A general convention is that an empty format string (``""``) produces
321the same result as if you had called :func:`str` on the value. A
322non-empty format string typically modifies the result.
Georg Brandle321c2f2008-05-12 16:45:43 +0000323
324The general form of a *standard format specifier* is:
325
326.. productionlist:: sf
Andrew M. Kuchlingfa6a4272009-10-05 22:42:56 +0000327 format_spec: [[`fill`]`align`][`sign`][#][0][`width`][,][.`precision`][`type`]
Ezio Melotticef2d492013-10-21 02:53:07 +0300328 fill: <any character>
Georg Brandle321c2f2008-05-12 16:45:43 +0000329 align: "<" | ">" | "=" | "^"
330 sign: "+" | "-" | " "
331 width: `integer`
332 precision: `integer`
Eric Smithde8b2ac2010-02-25 14:14:35 +0000333 type: "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000334
Ezio Melottie3c61362013-11-17 02:47:12 +0200335If a valid *align* value is specified, it can be preceded by a *fill*
Ezio Melotticef2d492013-10-21 02:53:07 +0300336character that can be any character and defaults to a space if omitted.
Martin Panter00f19ef2016-02-08 01:34:09 +0000337It is not possible to use a literal curly brace ("``{``" or "``}``") as
338the *fill* character when using the :meth:`str.format`
339method. However, it is possible to insert a curly brace
340with a nested replacement field. This limitation doesn't
Ezio Melotticef2d492013-10-21 02:53:07 +0300341affect the :func:`format` function.
Georg Brandle321c2f2008-05-12 16:45:43 +0000342
343The meaning of the various alignment options is as follows:
344
345 +---------+----------------------------------------------------------+
346 | Option | Meaning |
347 +=========+==========================================================+
348 | ``'<'`` | Forces the field to be left-aligned within the available |
Georg Brandl28046022011-02-25 11:01:04 +0000349 | | space (this is the default for most objects). |
Georg Brandle321c2f2008-05-12 16:45:43 +0000350 +---------+----------------------------------------------------------+
351 | ``'>'`` | Forces the field to be right-aligned within the |
Georg Brandl28046022011-02-25 11:01:04 +0000352 | | available space (this is the default for numbers). |
Georg Brandle321c2f2008-05-12 16:45:43 +0000353 +---------+----------------------------------------------------------+
354 | ``'='`` | Forces the padding to be placed after the sign (if any) |
355 | | but before the digits. This is used for printing fields |
356 | | in the form '+000000120'. This alignment option is only |
Terry Jan Reedy127f0d82016-03-20 21:05:50 -0400357 | | valid for numeric types. It becomes the default when '0'|
358 | | immediately precedes the field width. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000359 +---------+----------------------------------------------------------+
360 | ``'^'`` | Forces the field to be centered within the available |
361 | | space. |
362 +---------+----------------------------------------------------------+
363
364Note that unless a minimum field width is defined, the field width will always
365be the same size as the data to fill it, so that the alignment option has no
366meaning in this case.
367
368The *sign* option is only valid for number types, and can be one of the
369following:
370
371 +---------+----------------------------------------------------------+
372 | Option | Meaning |
373 +=========+==========================================================+
374 | ``'+'`` | indicates that a sign should be used for both |
375 | | positive as well as negative numbers. |
376 +---------+----------------------------------------------------------+
377 | ``'-'`` | indicates that a sign should be used only for negative |
378 | | numbers (this is the default behavior). |
379 +---------+----------------------------------------------------------+
380 | space | indicates that a leading space should be used on |
381 | | positive numbers, and a minus sign on negative numbers. |
382 +---------+----------------------------------------------------------+
383
Benjamin Petersonb535d322008-09-11 22:04:02 +0000384The ``'#'`` option is only valid for integers, and only for binary, octal, or
385hexadecimal output. If present, it specifies that the output will be prefixed
386by ``'0b'``, ``'0o'``, or ``'0x'``, respectively.
Eric Smitha5fa5a22008-07-16 00:11:49 +0000387
Andrew M. Kuchlingfa6a4272009-10-05 22:42:56 +0000388The ``','`` option signals the use of a comma for a thousands separator.
389For a locale aware separator, use the ``'n'`` integer presentation type
390instead.
391
Ezio Melottif5e81d62010-07-02 22:50:39 +0000392.. versionchanged:: 2.7
393 Added the ``','`` option (see also :pep:`378`).
394
Georg Brandle321c2f2008-05-12 16:45:43 +0000395*width* is a decimal integer defining the minimum field width. If not
396specified, then the field width will be determined by the content.
397
Terry Jan Reedy127f0d82016-03-20 21:05:50 -0400398When no explicit alignment is given, preceding the *width* field by a zero
399(``'0'``) character enables
Terry Jan Reedy73b19d02012-08-17 15:37:52 -0400400sign-aware zero-padding for numeric types. This is equivalent to a *fill*
401character of ``'0'`` with an *alignment* type of ``'='``.
Georg Brandle321c2f2008-05-12 16:45:43 +0000402
403The *precision* is a decimal number indicating how many digits should be
Georg Brandlbf899812008-07-18 11:15:06 +0000404displayed after the decimal point for a floating point value formatted with
405``'f'`` and ``'F'``, or before and after the decimal point for a floating point
406value formatted with ``'g'`` or ``'G'``. For non-number types the field
407indicates the maximum field size - in other words, how many characters will be
Eric Smith75232342009-05-07 19:36:09 +0000408used from the field content. The *precision* is not allowed for integer values.
Georg Brandle321c2f2008-05-12 16:45:43 +0000409
410Finally, the *type* determines how the data should be presented.
411
Eric Smithde8b2ac2010-02-25 14:14:35 +0000412The available string presentation types are:
413
414 +---------+----------------------------------------------------------+
415 | Type | Meaning |
416 +=========+==========================================================+
417 | ``'s'`` | String format. This is the default type for strings and |
418 | | may be omitted. |
419 +---------+----------------------------------------------------------+
420 | None | The same as ``'s'``. |
421 +---------+----------------------------------------------------------+
422
Georg Brandle321c2f2008-05-12 16:45:43 +0000423The available integer presentation types are:
424
425 +---------+----------------------------------------------------------+
426 | Type | Meaning |
427 +=========+==========================================================+
Eric Smitha5fa5a22008-07-16 00:11:49 +0000428 | ``'b'`` | Binary format. Outputs the number in base 2. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000429 +---------+----------------------------------------------------------+
430 | ``'c'`` | Character. Converts the integer to the corresponding |
431 | | unicode character before printing. |
432 +---------+----------------------------------------------------------+
433 | ``'d'`` | Decimal Integer. Outputs the number in base 10. |
434 +---------+----------------------------------------------------------+
435 | ``'o'`` | Octal format. Outputs the number in base 8. |
436 +---------+----------------------------------------------------------+
437 | ``'x'`` | Hex format. Outputs the number in base 16, using lower- |
438 | | case letters for the digits above 9. |
439 +---------+----------------------------------------------------------+
440 | ``'X'`` | Hex format. Outputs the number in base 16, using upper- |
441 | | case letters for the digits above 9. |
442 +---------+----------------------------------------------------------+
443 | ``'n'`` | Number. This is the same as ``'d'``, except that it uses |
444 | | the current locale setting to insert the appropriate |
445 | | number separator characters. |
446 +---------+----------------------------------------------------------+
Georg Brandlbf899812008-07-18 11:15:06 +0000447 | None | The same as ``'d'``. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000448 +---------+----------------------------------------------------------+
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000449
Eric Smithde8b2ac2010-02-25 14:14:35 +0000450In addition to the above presentation types, integers can be formatted
451with the floating point presentation types listed below (except
Serhiy Storchakaad13f332016-10-19 16:29:10 +0300452``'n'`` and ``None``). When doing so, :func:`float` is used to convert the
Eric Smithde8b2ac2010-02-25 14:14:35 +0000453integer to a floating point number before formatting.
454
Georg Brandle321c2f2008-05-12 16:45:43 +0000455The available presentation types for floating point and decimal values are:
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000456
Georg Brandle321c2f2008-05-12 16:45:43 +0000457 +---------+----------------------------------------------------------+
458 | Type | Meaning |
459 +=========+==========================================================+
460 | ``'e'`` | Exponent notation. Prints the number in scientific |
461 | | notation using the letter 'e' to indicate the exponent. |
Eric V. Smith12ec99d2013-04-15 09:51:54 -0400462 | | The default precision is ``6``. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000463 +---------+----------------------------------------------------------+
Eric Smithd6c393a2008-07-17 19:49:47 +0000464 | ``'E'`` | Exponent notation. Same as ``'e'`` except it uses an |
465 | | upper case 'E' as the separator character. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000466 +---------+----------------------------------------------------------+
Terry Jan Reedy90275022018-08-06 09:03:44 -0400467 | ``'f'`` | Fixed-point notation. Displays the number as a |
468 | | fixed-point number. The default precision is ``6``. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000469 +---------+----------------------------------------------------------+
Terry Jan Reedy90275022018-08-06 09:03:44 -0400470 | ``'F'`` | Fixed point notation. Same as ``'f'``. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000471 +---------+----------------------------------------------------------+
Mark Dickinsond5a713e2009-10-08 20:02:25 +0000472 | ``'g'`` | General format. For a given precision ``p >= 1``, |
473 | | this rounds the number to ``p`` significant digits and |
474 | | then formats the result in either fixed-point format |
475 | | or in scientific notation, depending on its magnitude. |
476 | | |
477 | | The precise rules are as follows: suppose that the |
478 | | result formatted with presentation type ``'e'`` and |
479 | | precision ``p-1`` would have exponent ``exp``. Then |
480 | | if ``-4 <= exp < p``, the number is formatted |
481 | | with presentation type ``'f'`` and precision |
482 | | ``p-1-exp``. Otherwise, the number is formatted |
483 | | with presentation type ``'e'`` and precision ``p-1``. |
484 | | In both cases insignificant trailing zeros are removed |
485 | | from the significand, and the decimal point is also |
486 | | removed if there are no remaining digits following it. |
487 | | |
Benjamin Peterson1e1a8c72010-10-12 23:12:45 +0000488 | | Positive and negative infinity, positive and negative |
Mark Dickinsond5a713e2009-10-08 20:02:25 +0000489 | | zero, and nans, are formatted as ``inf``, ``-inf``, |
490 | | ``0``, ``-0`` and ``nan`` respectively, regardless of |
491 | | the precision. |
492 | | |
493 | | A precision of ``0`` is treated as equivalent to a |
Eric V. Smith12ec99d2013-04-15 09:51:54 -0400494 | | precision of ``1``. The default precision is ``6``. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000495 +---------+----------------------------------------------------------+
496 | ``'G'`` | General format. Same as ``'g'`` except switches to |
Mark Dickinsond5a713e2009-10-08 20:02:25 +0000497 | | ``'E'`` if the number gets too large. The |
498 | | representations of infinity and NaN are uppercased, too. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000499 +---------+----------------------------------------------------------+
500 | ``'n'`` | Number. This is the same as ``'g'``, except that it uses |
501 | | the current locale setting to insert the appropriate |
502 | | number separator characters. |
503 +---------+----------------------------------------------------------+
504 | ``'%'`` | Percentage. Multiplies the number by 100 and displays |
505 | | in fixed (``'f'``) format, followed by a percent sign. |
506 +---------+----------------------------------------------------------+
Georg Brandlbf899812008-07-18 11:15:06 +0000507 | None | The same as ``'g'``. |
Georg Brandle321c2f2008-05-12 16:45:43 +0000508 +---------+----------------------------------------------------------+
509
510
Ezio Melottie11690a2010-07-02 22:17:29 +0000511
512.. _formatexamples:
513
514Format examples
515^^^^^^^^^^^^^^^
516
Martin Panter00f19ef2016-02-08 01:34:09 +0000517This section contains examples of the :meth:`str.format` syntax and
518comparison with the old ``%``-formatting.
Ezio Melottie11690a2010-07-02 22:17:29 +0000519
520In most of the cases the syntax is similar to the old ``%``-formatting, with the
521addition of the ``{}`` and with ``:`` used instead of ``%``.
522For example, ``'%03.2f'`` can be translated to ``'{:03.2f}'``.
523
524The new format syntax also supports new and different options, shown in the
525follow examples.
526
527Accessing arguments by position::
528
529 >>> '{0}, {1}, {2}'.format('a', 'b', 'c')
530 'a, b, c'
531 >>> '{}, {}, {}'.format('a', 'b', 'c') # 2.7+ only
532 'a, b, c'
533 >>> '{2}, {1}, {0}'.format('a', 'b', 'c')
534 'c, b, a'
535 >>> '{2}, {1}, {0}'.format(*'abc') # unpacking argument sequence
536 'c, b, a'
537 >>> '{0}{1}{0}'.format('abra', 'cad') # arguments' indices can be repeated
538 'abracadabra'
539
540Accessing arguments by name::
541
542 >>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W')
543 'Coordinates: 37.24N, -115.81W'
544 >>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
545 >>> 'Coordinates: {latitude}, {longitude}'.format(**coord)
546 'Coordinates: 37.24N, -115.81W'
547
548Accessing arguments' attributes::
549
Ezio Melottif5e81d62010-07-02 22:50:39 +0000550 >>> c = 3-5j
Ezio Melottie11690a2010-07-02 22:17:29 +0000551 >>> ('The complex number {0} is formed from the real part {0.real} '
552 ... 'and the imaginary part {0.imag}.').format(c)
553 'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.'
554 >>> class Point(object):
555 ... def __init__(self, x, y):
556 ... self.x, self.y = x, y
557 ... def __str__(self):
558 ... return 'Point({self.x}, {self.y})'.format(self=self)
559 ...
560 >>> str(Point(4, 2))
561 'Point(4, 2)'
562
563
564Accessing arguments' items::
565
566 >>> coord = (3, 5)
567 >>> 'X: {0[0]}; Y: {0[1]}'.format(coord)
568 'X: 3; Y: 5'
569
570Replacing ``%s`` and ``%r``::
571
572 >>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
573 "repr() shows quotes: 'test1'; str() doesn't: test2"
574
575Aligning the text and specifying a width::
576
577 >>> '{:<30}'.format('left aligned')
578 'left aligned '
579 >>> '{:>30}'.format('right aligned')
580 ' right aligned'
581 >>> '{:^30}'.format('centered')
582 ' centered '
583 >>> '{:*^30}'.format('centered') # use '*' as a fill char
584 '***********centered***********'
585
586Replacing ``%+f``, ``%-f``, and ``% f`` and specifying a sign::
587
588 >>> '{:+f}; {:+f}'.format(3.14, -3.14) # show it always
589 '+3.140000; -3.140000'
590 >>> '{: f}; {: f}'.format(3.14, -3.14) # show a space for positive numbers
591 ' 3.140000; -3.140000'
592 >>> '{:-f}; {:-f}'.format(3.14, -3.14) # show only the minus -- same as '{:f}; {:f}'
593 '3.140000; -3.140000'
594
595Replacing ``%x`` and ``%o`` and converting the value to different bases::
596
597 >>> # format also supports binary numbers
598 >>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)
599 'int: 42; hex: 2a; oct: 52; bin: 101010'
600 >>> # with 0x, 0o, or 0b as prefix:
601 >>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42)
602 'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'
603
604Using the comma as a thousands separator::
605
606 >>> '{:,}'.format(1234567890)
607 '1,234,567,890'
608
609Expressing a percentage::
610
611 >>> points = 19.5
612 >>> total = 22
Sandro Tosi4fbad842011-12-24 15:52:36 +0100613 >>> 'Correct answers: {:.2%}'.format(points/total)
Ezio Melottie11690a2010-07-02 22:17:29 +0000614 'Correct answers: 88.64%'
615
616Using type-specific formatting::
617
618 >>> import datetime
619 >>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
620 >>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
621 '2010-07-04 12:15:58'
622
623Nesting arguments and more complex examples::
624
625 >>> for align, text in zip('<^>', ['left', 'center', 'right']):
Georg Brandl28046022011-02-25 11:01:04 +0000626 ... '{0:{fill}{align}16}'.format(text, fill=align, align=align)
Ezio Melottie11690a2010-07-02 22:17:29 +0000627 ...
628 'left<<<<<<<<<<<<'
629 '^^^^^center^^^^^'
630 '>>>>>>>>>>>right'
631 >>>
632 >>> octets = [192, 168, 0, 1]
633 >>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)
634 'C0A80001'
635 >>> int(_, 16)
636 3232235521
637 >>>
638 >>> width = 5
639 >>> for num in range(5,12):
640 ... for base in 'dXob':
641 ... print '{0:{width}{base}}'.format(num, base=base, width=width),
642 ... print
643 ...
644 5 5 5 101
645 6 6 6 110
646 7 7 7 111
647 8 8 10 1000
648 9 9 11 1001
649 10 A 12 1010
650 11 B 13 1011
651
652
653
Georg Brandl8ec7f652007-08-15 14:28:01 +0000654Template strings
655----------------
656
Georg Brandl8b10f132009-12-19 17:30:28 +0000657.. versionadded:: 2.4
658
Georg Brandl8ec7f652007-08-15 14:28:01 +0000659Templates provide simpler string substitutions as described in :pep:`292`.
660Instead of the normal ``%``\ -based substitutions, Templates support ``$``\
661-based substitutions, using the following rules:
662
663* ``$$`` is an escape; it is replaced with a single ``$``.
664
665* ``$identifier`` names a substitution placeholder matching a mapping key of
666 ``"identifier"``. By default, ``"identifier"`` must spell a Python
667 identifier. The first non-identifier character after the ``$`` character
668 terminates this placeholder specification.
669
670* ``${identifier}`` is equivalent to ``$identifier``. It is required when valid
671 identifier characters follow the placeholder but are not part of the
672 placeholder, such as ``"${noun}ification"``.
673
674Any other appearance of ``$`` in the string will result in a :exc:`ValueError`
675being raised.
676
Georg Brandl8ec7f652007-08-15 14:28:01 +0000677The :mod:`string` module provides a :class:`Template` class that implements
678these rules. The methods of :class:`Template` are:
679
680
681.. class:: Template(template)
682
683 The constructor takes a single argument which is the template string.
684
685
Benjamin Petersonc7b05922008-04-25 01:29:10 +0000686 .. method:: substitute(mapping[, **kws])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000687
Benjamin Petersonc7b05922008-04-25 01:29:10 +0000688 Performs the template substitution, returning a new string. *mapping* is
689 any dictionary-like object with keys that match the placeholders in the
690 template. Alternatively, you can provide keyword arguments, where the
691 keywords are the placeholders. When both *mapping* and *kws* are given
692 and there are duplicates, the placeholders from *kws* take precedence.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000693
694
Benjamin Petersonc7b05922008-04-25 01:29:10 +0000695 .. method:: safe_substitute(mapping[, **kws])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000696
Benjamin Petersonc7b05922008-04-25 01:29:10 +0000697 Like :meth:`substitute`, except that if placeholders are missing from
698 *mapping* and *kws*, instead of raising a :exc:`KeyError` exception, the
699 original placeholder will appear in the resulting string intact. Also,
700 unlike with :meth:`substitute`, any other appearances of the ``$`` will
701 simply return ``$`` instead of raising :exc:`ValueError`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000702
Benjamin Petersonc7b05922008-04-25 01:29:10 +0000703 While other exceptions may still occur, this method is called "safe"
704 because substitutions always tries to return a usable string instead of
705 raising an exception. In another sense, :meth:`safe_substitute` may be
706 anything other than safe, since it will silently ignore malformed
707 templates containing dangling delimiters, unmatched braces, or
708 placeholders that are not valid Python identifiers.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000709
Georg Brandl1136ff52009-11-18 20:05:15 +0000710 :class:`Template` instances also provide one public data attribute:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000711
Georg Brandl1136ff52009-11-18 20:05:15 +0000712 .. attribute:: template
Georg Brandl8ec7f652007-08-15 14:28:01 +0000713
Georg Brandl1136ff52009-11-18 20:05:15 +0000714 This is the object passed to the constructor's *template* argument. In
715 general, you shouldn't change it, but read-only access is not enforced.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000716
Ezio Melottid5bdb1f2013-02-21 12:30:32 +0200717Here is an example of how to use a Template::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000718
719 >>> from string import Template
720 >>> s = Template('$who likes $what')
721 >>> s.substitute(who='tim', what='kung pao')
722 'tim likes kung pao'
723 >>> d = dict(who='tim')
724 >>> Template('Give $who $100').substitute(d)
725 Traceback (most recent call last):
Ezio Melottid5bdb1f2013-02-21 12:30:32 +0200726 ...
Ezio Melotti57dfb222013-01-11 08:53:10 +0200727 ValueError: Invalid placeholder in string: line 1, col 11
Georg Brandl8ec7f652007-08-15 14:28:01 +0000728 >>> Template('$who likes $what').substitute(d)
729 Traceback (most recent call last):
Ezio Melottid5bdb1f2013-02-21 12:30:32 +0200730 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000731 KeyError: 'what'
732 >>> Template('$who likes $what').safe_substitute(d)
733 'tim likes $what'
734
735Advanced usage: you can derive subclasses of :class:`Template` to customize the
736placeholder syntax, delimiter character, or the entire regular expression used
737to parse template strings. To do this, you can override these class attributes:
738
739* *delimiter* -- This is the literal string describing a placeholder introducing
Eli Benderskye11af592011-08-06 09:29:12 +0300740 delimiter. The default value is ``$``. Note that this should *not* be a
741 regular expression, as the implementation will call :meth:`re.escape` on this
742 string as needed.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000743
744* *idpattern* -- This is the regular expression describing the pattern for
745 non-braced placeholders (the braces will be added automatically as
746 appropriate). The default value is the regular expression
747 ``[_a-z][_a-z0-9]*``.
748
749Alternatively, you can provide the entire regular expression pattern by
750overriding the class attribute *pattern*. If you do this, the value must be a
751regular expression object with four named capturing groups. The capturing
752groups correspond to the rules given above, along with the invalid placeholder
753rule:
754
755* *escaped* -- This group matches the escape sequence, e.g. ``$$``, in the
756 default pattern.
757
758* *named* -- This group matches the unbraced placeholder name; it should not
759 include the delimiter in capturing group.
760
761* *braced* -- This group matches the brace enclosed placeholder name; it should
762 not include either the delimiter or braces in the capturing group.
763
764* *invalid* -- This group matches any other delimiter pattern (usually a single
765 delimiter), and it should appear last in the regular expression.
766
767
768String functions
769----------------
770
771The following functions are available to operate on string and Unicode objects.
772They are not available as string methods.
773
774
Ezio Melotti9aac2452009-09-26 11:20:53 +0000775.. function:: capwords(s[, sep])
Georg Brandl8ec7f652007-08-15 14:28:01 +0000776
Ezio Melotti9aac2452009-09-26 11:20:53 +0000777 Split the argument into words using :meth:`str.split`, capitalize each word
778 using :meth:`str.capitalize`, and join the capitalized words using
779 :meth:`str.join`. If the optional second argument *sep* is absent
780 or ``None``, runs of whitespace characters are replaced by a single space
781 and leading and trailing whitespace are removed, otherwise *sep* is used to
782 split and join the words.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000783
784
785.. function:: maketrans(from, to)
786
787 Return a translation table suitable for passing to :func:`translate`, that will
788 map each character in *from* into the character at the same position in *to*;
789 *from* and *to* must have the same length.
790
Georg Brandl16a57f62009-04-27 15:29:09 +0000791 .. note::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000792
793 Don't use strings derived from :const:`lowercase` and :const:`uppercase` as
794 arguments; in some locales, these don't have the same length. For case
Georg Brandld5ad6da2009-03-04 18:24:41 +0000795 conversions, always use :meth:`str.lower` and :meth:`str.upper`.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000796
797
798Deprecated string functions
799---------------------------
800
801The following list of functions are also defined as methods of string and
802Unicode objects; see section :ref:`string-methods` for more information on
803those. You should consider these functions as deprecated, although they will
Ezio Melotti510ff542012-05-03 19:21:40 +0300804not be removed until Python 3. The functions defined in this module are:
Georg Brandl8ec7f652007-08-15 14:28:01 +0000805
806
807.. function:: atof(s)
808
809 .. deprecated:: 2.0
810 Use the :func:`float` built-in function.
811
812 .. index:: builtin: float
813
814 Convert a string to a floating point number. The string must have the standard
815 syntax for a floating point literal in Python, optionally preceded by a sign
816 (``+`` or ``-``). Note that this behaves identical to the built-in function
817 :func:`float` when passed a string.
818
819 .. note::
820
821 .. index::
822 single: NaN
823 single: Infinity
824
825 When passing in a string, values for NaN and Infinity may be returned, depending
826 on the underlying C library. The specific set of strings accepted which cause
827 these values to be returned depends entirely on the C library and is known to
828 vary.
829
830
831.. function:: atoi(s[, base])
832
833 .. deprecated:: 2.0
834 Use the :func:`int` built-in function.
835
836 .. index:: builtin: eval
837
838 Convert string *s* to an integer in the given *base*. The string must consist
839 of one or more digits, optionally preceded by a sign (``+`` or ``-``). The
840 *base* defaults to 10. If it is 0, a default base is chosen depending on the
841 leading characters of the string (after stripping the sign): ``0x`` or ``0X``
842 means 16, ``0`` means 8, anything else means 10. If *base* is 16, a leading
843 ``0x`` or ``0X`` is always accepted, though not required. This behaves
844 identically to the built-in function :func:`int` when passed a string. (Also
845 note: for a more flexible interpretation of numeric literals, use the built-in
846 function :func:`eval`.)
847
848
849.. function:: atol(s[, base])
850
851 .. deprecated:: 2.0
852 Use the :func:`long` built-in function.
853
854 .. index:: builtin: long
855
856 Convert string *s* to a long integer in the given *base*. The string must
857 consist of one or more digits, optionally preceded by a sign (``+`` or ``-``).
858 The *base* argument has the same meaning as for :func:`atoi`. A trailing ``l``
859 or ``L`` is not allowed, except if the base is 0. Note that when invoked
860 without *base* or with *base* set to 10, this behaves identical to the built-in
861 function :func:`long` when passed a string.
862
863
864.. function:: capitalize(word)
865
866 Return a copy of *word* with only its first character capitalized.
867
868
869.. function:: expandtabs(s[, tabsize])
870
871 Expand tabs in a string replacing them by one or more spaces, depending on the
872 current column and the given tab size. The column number is reset to zero after
873 each newline occurring in the string. This doesn't understand other non-printing
874 characters or escape sequences. The tab size defaults to 8.
875
876
877.. function:: find(s, sub[, start[,end]])
878
879 Return the lowest index in *s* where the substring *sub* is found such that
880 *sub* is wholly contained in ``s[start:end]``. Return ``-1`` on failure.
881 Defaults for *start* and *end* and interpretation of negative values is the same
882 as for slices.
883
884
885.. function:: rfind(s, sub[, start[, end]])
886
887 Like :func:`find` but find the highest index.
888
889
890.. function:: index(s, sub[, start[, end]])
891
892 Like :func:`find` but raise :exc:`ValueError` when the substring is not found.
893
894
895.. function:: rindex(s, sub[, start[, end]])
896
897 Like :func:`rfind` but raise :exc:`ValueError` when the substring is not found.
898
899
900.. function:: count(s, sub[, start[, end]])
901
902 Return the number of (non-overlapping) occurrences of substring *sub* in string
903 ``s[start:end]``. Defaults for *start* and *end* and interpretation of negative
904 values are the same as for slices.
905
906
907.. function:: lower(s)
908
909 Return a copy of *s*, but with upper case letters converted to lower case.
910
911
912.. function:: split(s[, sep[, maxsplit]])
913
914 Return a list of the words of the string *s*. If the optional second argument
915 *sep* is absent or ``None``, the words are separated by arbitrary strings of
Ezio Melotti95f42a82012-05-09 14:59:24 +0300916 whitespace characters (space, tab, newline, return, formfeed). If the second
Georg Brandl8ec7f652007-08-15 14:28:01 +0000917 argument *sep* is present and not ``None``, it specifies a string to be used as
918 the word separator. The returned list will then have one more item than the
Ezio Melotti95f42a82012-05-09 14:59:24 +0300919 number of non-overlapping occurrences of the separator in the string.
920 If *maxsplit* is given, at most *maxsplit* number of splits occur, and the
921 remainder of the string is returned as the final element of the list (thus,
922 the list will have at most ``maxsplit+1`` elements). If *maxsplit* is not
923 specified or ``-1``, then there is no limit on the number of splits (all
924 possible splits are made).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000925
926 The behavior of split on an empty string depends on the value of *sep*. If *sep*
927 is not specified, or specified as ``None``, the result will be an empty list.
928 If *sep* is specified as any string, the result will be a list containing one
929 element which is an empty string.
930
931
932.. function:: rsplit(s[, sep[, maxsplit]])
933
934 Return a list of the words of the string *s*, scanning *s* from the end. To all
935 intents and purposes, the resulting list of words is the same as returned by
936 :func:`split`, except when the optional third argument *maxsplit* is explicitly
Ezio Melotti95f42a82012-05-09 14:59:24 +0300937 specified and nonzero. If *maxsplit* is given, at most *maxsplit* number of
Georg Brandl8ec7f652007-08-15 14:28:01 +0000938 splits -- the *rightmost* ones -- occur, and the remainder of the string is
939 returned as the first element of the list (thus, the list will have at most
940 ``maxsplit+1`` elements).
941
942 .. versionadded:: 2.4
943
944
945.. function:: splitfields(s[, sep[, maxsplit]])
946
947 This function behaves identically to :func:`split`. (In the past, :func:`split`
948 was only used with one argument, while :func:`splitfields` was only used with
949 two arguments.)
950
951
952.. function:: join(words[, sep])
953
954 Concatenate a list or tuple of words with intervening occurrences of *sep*.
955 The default value for *sep* is a single space character. It is always true that
956 ``string.join(string.split(s, sep), sep)`` equals *s*.
957
958
959.. function:: joinfields(words[, sep])
960
961 This function behaves identically to :func:`join`. (In the past, :func:`join`
962 was only used with one argument, while :func:`joinfields` was only used with two
963 arguments.) Note that there is no :meth:`joinfields` method on string objects;
964 use the :meth:`join` method instead.
965
966
967.. function:: lstrip(s[, chars])
968
969 Return a copy of the string with leading characters removed. If *chars* is
970 omitted or ``None``, whitespace characters are removed. If given and not
971 ``None``, *chars* must be a string; the characters in the string will be
972 stripped from the beginning of the string this method is called on.
973
974 .. versionchanged:: 2.2.3
975 The *chars* parameter was added. The *chars* parameter cannot be passed in
976 earlier 2.2 versions.
977
978
979.. function:: rstrip(s[, chars])
980
981 Return a copy of the string with trailing characters removed. If *chars* is
982 omitted or ``None``, whitespace characters are removed. If given and not
983 ``None``, *chars* must be a string; the characters in the string will be
984 stripped from the end of the string this method is called on.
985
986 .. versionchanged:: 2.2.3
987 The *chars* parameter was added. The *chars* parameter cannot be passed in
988 earlier 2.2 versions.
989
990
991.. function:: strip(s[, chars])
992
993 Return a copy of the string with leading and trailing characters removed. If
994 *chars* is omitted or ``None``, whitespace characters are removed. If given and
995 not ``None``, *chars* must be a string; the characters in the string will be
996 stripped from the both ends of the string this method is called on.
997
998 .. versionchanged:: 2.2.3
999 The *chars* parameter was added. The *chars* parameter cannot be passed in
1000 earlier 2.2 versions.
1001
1002
1003.. function:: swapcase(s)
1004
1005 Return a copy of *s*, but with lower case letters converted to upper case and
1006 vice versa.
1007
1008
1009.. function:: translate(s, table[, deletechars])
1010
1011 Delete all characters from *s* that are in *deletechars* (if present), and then
1012 translate the characters using *table*, which must be a 256-character string
1013 giving the translation for each character value, indexed by its ordinal. If
1014 *table* is ``None``, then only the character deletion step is performed.
1015
1016
1017.. function:: upper(s)
1018
1019 Return a copy of *s*, but with lower case letters converted to upper case.
1020
1021
Georg Brandl2cc39ad2009-06-08 16:03:41 +00001022.. function:: ljust(s, width[, fillchar])
1023 rjust(s, width[, fillchar])
1024 center(s, width[, fillchar])
Georg Brandl8ec7f652007-08-15 14:28:01 +00001025
1026 These functions respectively left-justify, right-justify and center a string in
1027 a field of given width. They return a string that is at least *width*
Georg Brandl2cc39ad2009-06-08 16:03:41 +00001028 characters wide, created by padding the string *s* with the character *fillchar*
1029 (default is a space) until the given width on the right, left or both sides.
1030 The string is never truncated.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001031
1032
1033.. function:: zfill(s, width)
1034
Andrew Svetlov0c68c5d2012-09-28 16:32:27 +03001035 Pad a numeric string *s* on the left with zero digits until the
1036 given *width* is reached. Strings starting with a sign are handled
1037 correctly.
Georg Brandl8ec7f652007-08-15 14:28:01 +00001038
1039
Andrew Svetlov9ac20232012-09-28 16:31:06 +03001040.. function:: replace(s, old, new[, maxreplace])
Georg Brandl8ec7f652007-08-15 14:28:01 +00001041
Andrew Svetlov9ac20232012-09-28 16:31:06 +03001042 Return a copy of string *s* with all occurrences of substring *old* replaced
Georg Brandl8ec7f652007-08-15 14:28:01 +00001043 by *new*. If the optional argument *maxreplace* is given, the first
1044 *maxreplace* occurrences are replaced.
1045