\section{Standard Module \sectcode{string}}
\label{module-string}

\stmodindex{string}

This module defines some constants useful for checking character
classes and some useful string functions.  See the module
\code{re} for string functions based on regular expressions.
\refstmodindex{re}

The constants defined in this module are are:

\renewcommand{\indexsubitem}{(data in module string)}
\begin{datadesc}{digits}
  The string \code{'0123456789'}.
\end{datadesc}

\begin{datadesc}{hexdigits}
  The string \code{'0123456789abcdefABCDEF'}.
\end{datadesc}

\begin{datadesc}{letters}
  The concatenation of the strings \code{lowercase} and
  \code{uppercase} described below.
\end{datadesc}

\begin{datadesc}{lowercase}
  A string containing all the characters that are considered lowercase
  letters.  On most systems this is the string
  \code{'abcdefghijklmnopqrstuvwxyz'}.  Do not change its definition ---
  the effect on the routines \code{upper} and \code{swapcase} is
  undefined.
\end{datadesc}

\begin{datadesc}{octdigits}
  The string \code{'01234567'}.
\end{datadesc}

\begin{datadesc}{uppercase}
  A string containing all the characters that are considered uppercase
  letters.  On most systems this is the string
  \code{'ABCDEFGHIJKLMNOPQRSTUVWXYZ'}.  Do not change its definition ---
  the effect on the routines \code{lower} and \code{swapcase} is
  undefined.
\end{datadesc}

\begin{datadesc}{whitespace}
  A string containing all characters that are considered whitespace.
  On most systems this includes the characters space, tab, linefeed,
  return, formfeed, and vertical tab.  Do not change its definition ---
  the effect on the routines \code{strip} and \code{split} is
  undefined.
\end{datadesc}

The functions defined in this module are:

\renewcommand{\indexsubitem}{(in module string)}

\begin{funcdesc}{atof}{s}
Convert a string to a floating point number.  The string must have
the standard syntax for a floating point literal in Python, optionally
preceded by a sign (\samp{+} or \samp{-}).  Note that this behaves
identical to the built-in function \code{float()} when passed a string.
\end{funcdesc}

\begin{funcdesc}{atoi}{s\optional{\, base}}
Convert string \var{s} to an integer in the given \var{base}.  The
string must consist of one or more digits, optionally preceded by a
sign (\samp{+} or \samp{-}).  The \var{base} defaults to 10.  If it is
0, a default base is chosen depending on the leading characters of the
string (after stripping the sign): \samp{0x} or \samp{0X} means 16,
\samp{0} means 8, anything else means 10.  If \var{base} is 16, a
leading \samp{0x} or \samp{0X} is always accepted.  Note that when
invoked without \var{base} or with \var{base} set to 10, this behaves
identical to the built-in function \code{int()} when passed a string.
(Also note: for a more flexible interpretation of numeric literals,
use the built-in function \code{eval()}.)
\bifuncindex{eval}
\end{funcdesc}

\begin{funcdesc}{atol}{s\optional{\, base}}
Convert string \var{s} to a long integer in the given \var{base}.  The
string must consist of one or more digits, optionally preceded by a
sign (\samp{+} or \samp{-}).  The \var{base} argument has the same
meaning as for \code{atoi()}.  A trailing \samp{l} or \samp{L} is not
allowed, except if the base is 0.  Note that when invoked without
\var{base} or with \var{base} set to 10, this behaves identical to the
built-in function \code{long()} when passed a string.
\end{funcdesc}

\begin{funcdesc}{capitalize}{word}
Capitalize the first character of the argument.
\end{funcdesc}

\begin{funcdesc}{capwords}{s}
Split the argument into words using \code{split}, capitalize each word
using \code{capitalize}, and join the capitalized words using
\code{join}.  Note that this replaces runs of whitespace characters by
a single space.  (See also \code{regsub.capwords()} for a version
that doesn't change the delimiters, and lets you specify a word
separator.)
\end{funcdesc}

\begin{funcdesc}{expandtabs}{s\, tabsize}
Expand tabs in a string, i.e.\ replace them by one or more spaces,
depending on the current column and the given tab size.  The column
number is reset to zero after each newline occurring in the string.
This doesn't understand other non-printing characters or escape
sequences.
\end{funcdesc}

\begin{funcdesc}{find}{s\, sub\optional{\, start\optional{\,end}}}
Return the lowest index in \var{s} where the substring \var{sub} is
found such that \var{sub} is wholly contained in
\code{\var{s}[\var{start}:\var{end}]}.  Return -1 on failure.
Defaults for \var{start} and \var{end} and interpretation of negative
values is the same as for slices.
\end{funcdesc}

\begin{funcdesc}{rfind}{s\, sub\optional{\, start\optional{\,end}}}
Like \code{find} but find the highest index.
\end{funcdesc}

\begin{funcdesc}{index}{s\, sub\optional{\, start\optional{\,end}}}
Like \code{find} but raise \code{ValueError} when the substring is
not found.
\end{funcdesc}

\begin{funcdesc}{rindex}{s\, sub\optional{\, start\optional{\,end}}}
Like \code{rfind} but raise \code{ValueError} when the substring is
not found.
\end{funcdesc}

\begin{funcdesc}{count}{s\, sub\optional{\, start\optional{\,end}}}
Return the number of (non-overlapping) occurrences of substring
\var{sub} in string \code{\var{s}[\var{start}:\var{end}]}.
Defaults for \var{start} and \var{end} and interpretation of negative
values is the same as for slices.
\end{funcdesc}

\begin{funcdesc}{lower}{s}
Convert letters to lower case.
\end{funcdesc}

\begin{funcdesc}{maketrans}{from, to}
Return a translation table suitable for passing to \code{string.translate}
or \code{regex.compile}, that will map each character in \var{from} 
into the character at the same position in \var{to}; \var{from} and
\var{to} must have the same length. 
\end{funcdesc}

\begin{funcdesc}{split}{s\optional{\, sep\optional{\, maxsplit}}}
Return a list of the words of the string \var{s}.  If the optional
second argument \var{sep} is absent or \code{None}, the words are
separated by arbitrary strings of whitespace characters (space, tab,
newline, return, formfeed).  If the second argument \var{sep} is
present and not \code{None}, it specifies a string to be used as the
word separator.  The returned list will then have one more items than
the number of non-overlapping occurrences of the separator in the
string.  The optional third argument \var{maxsplit} defaults to 0.  If
it is nonzero, at most \var{maxsplit} number of splits occur, and the
remainder of the string is returned as the final element of the list
(thus, the list will have at most \code{\var{maxsplit}+1} elements).
(See also \code{regsub.split()} for a version that allows specifying a
regular expression as the separator.)
\end{funcdesc}

\begin{funcdesc}{splitfields}{s\optional{\, sep\optional{\, maxsplit}}}
This function behaves identically to \code{split}.  (In the past,
\code{split} was only used with one argument, while \code{splitfields}
was only used with two arguments.)
\end{funcdesc}

\begin{funcdesc}{join}{words\optional{\, sep}}
Concatenate a list or tuple of words with intervening occurrences of
\var{sep}.  The default value for \var{sep} is a single space character.
It is always true that
\code{string.join(string.split(\var{s}, \var{sep}), \var{sep})}
equals \var{s}.
\end{funcdesc}

\begin{funcdesc}{joinfields}{words\optional{\, sep}}
This function behaves identical to \code{join}.  (In the past,
\code{join} was only used with one argument, while \code{joinfields}
was only used with two arguments.)
\end{funcdesc}

\begin{funcdesc}{lstrip}{s}
Remove leading whitespace from the string \var{s}.
\end{funcdesc}

\begin{funcdesc}{rstrip}{s}
Remove trailing whitespace from the string \var{s}.
\end{funcdesc}

\begin{funcdesc}{strip}{s}
Remove leading and trailing whitespace from the string \var{s}.
\end{funcdesc}

\begin{funcdesc}{swapcase}{s}
Convert lower case letters to upper case and vice versa.
\end{funcdesc}

\begin{funcdesc}{translate}{s, table\optional{, deletechars}}
Delete all characters from \var{s} that are in \var{deletechars} (if present), and 
then translate the characters using \var{table}, which must be
a 256-character string giving the translation for each character
value, indexed by its ordinal.  
\end{funcdesc}

\begin{funcdesc}{upper}{s}
Convert letters to upper case.
\end{funcdesc}

\begin{funcdesc}{ljust}{s\, width}
\funcline{rjust}{s\, width}
\funcline{center}{s\, width}
These functions respectively left-justify, right-justify and center a
string in a field of given width.
They return a string that is at least
\var{width}
characters wide, created by padding the string
\var{s}
with spaces until the given width on the right, left or both sides.
The string is never truncated.
\end{funcdesc}

\begin{funcdesc}{zfill}{s\, width}
Pad a numeric string on the left with zero digits until the given
width is reached.  Strings starting with a sign are handled correctly.
\end{funcdesc}

\begin{funcdesc}{replace}{str, old, new\optional{, maxsplit}}
Return a copy of string \var{str} with all occurrences of substring
\var{old} replaced by \var{new}.  If the optional argument
\var{maxsplit} is given, the first \var{maxsplit} occurrences are
replaced.
\end{funcdesc}

This module is implemented in Python.  Much of its functionality has
been reimplemented in the built-in module \code{strop}.  However, you
should \emph{never} import the latter module directly.  When
\code{string} discovers that \code{strop} exists, it transparently
replaces parts of itself with the implementation from \code{strop}.
After initialization, there is \emph{no} overhead in using
\code{string} instead of \code{strop}.
\refbimodindex{strop}
