source: vendor/python/2.5/Doc/lib/libtextwrap.tex

Last change on this file was 3225, checked in by bird, 18 years ago

Python 2.5

File size: 6.7 KB
Line 
1\section{\module{textwrap} ---
2 Text wrapping and filling}
3
4\declaremodule{standard}{textwrap}
5\modulesynopsis{Text wrapping and filling}
6\moduleauthor{Greg Ward}{gward@python.net}
7\sectionauthor{Greg Ward}{gward@python.net}
8
9\versionadded{2.3}
10
11The \module{textwrap} module provides two convenience functions,
12\function{wrap()} and \function{fill()}, as well as
13\class{TextWrapper}, the class that does all the work, and a utility function
14\function{dedent()}. If you're just wrapping or filling one or two
15text strings, the convenience functions should be good enough; otherwise,
16you should use an instance of \class{TextWrapper} for efficiency.
17
18\begin{funcdesc}{wrap}{text\optional{, width\optional{, \moreargs}}}
19Wraps the single paragraph in \var{text} (a string) so every line is at
20most \var{width} characters long. Returns a list of output lines,
21without final newlines.
22
23Optional keyword arguments correspond to the instance attributes of
24\class{TextWrapper}, documented below. \var{width} defaults to
25\code{70}.
26\end{funcdesc}
27
28\begin{funcdesc}{fill}{text\optional{, width\optional{, \moreargs}}}
29Wraps the single paragraph in \var{text}, and returns a single string
30containing the wrapped paragraph. \function{fill()} is shorthand for
31\begin{verbatim}
32"\n".join(wrap(text, ...))
33\end{verbatim}
34
35In particular, \function{fill()} accepts exactly the same keyword
36arguments as \function{wrap()}.
37\end{funcdesc}
38
39Both \function{wrap()} and \function{fill()} work by creating a
40\class{TextWrapper} instance and calling a single method on it. That
41instance is not reused, so for applications that wrap/fill many text
42strings, it will be more efficient for you to create your own
43\class{TextWrapper} object.
44
45An additional utility function, \function{dedent()}, is provided to
46remove indentation from strings that have unwanted whitespace to the
47left of the text.
48
49\begin{funcdesc}{dedent}{text}
50Remove any common leading whitespace from every line in \var{text}.
51
52This can be used to make triple-quoted strings line up with the left
53edge of the display, while still presenting them in the source code
54in indented form.
55
56Note that tabs and spaces are both treated as whitespace, but they are
57not equal: the lines \code{" {} hello"} and \code{"\textbackslash{}thello"}
58are considered to have no common leading whitespace. (This behaviour is
59new in Python 2.5; older versions of this module incorrectly expanded
60tabs before searching for common leading whitespace.)
61
62For example:
63\begin{verbatim}
64def test():
65 # end first line with \ to avoid the empty line!
66 s = '''\
67 hello
68 world
69 '''
70 print repr(s) # prints ' hello\n world\n '
71 print repr(dedent(s)) # prints 'hello\n world\n'
72\end{verbatim}
73\end{funcdesc}
74
75\begin{classdesc}{TextWrapper}{...}
76The \class{TextWrapper} constructor accepts a number of optional
77keyword arguments. Each argument corresponds to one instance attribute,
78so for example
79\begin{verbatim}
80wrapper = TextWrapper(initial_indent="* ")
81\end{verbatim}
82is the same as
83\begin{verbatim}
84wrapper = TextWrapper()
85wrapper.initial_indent = "* "
86\end{verbatim}
87
88You can re-use the same \class{TextWrapper} object many times, and you
89can change any of its options through direct assignment to instance
90attributes between uses.
91\end{classdesc}
92
93The \class{TextWrapper} instance attributes (and keyword arguments to
94the constructor) are as follows:
95
96\begin{memberdesc}{width}
97(default: \code{70}) The maximum length of wrapped lines. As long as
98there are no individual words in the input text longer than
99\member{width}, \class{TextWrapper} guarantees that no output line
100will be longer than \member{width} characters.
101\end{memberdesc}
102
103\begin{memberdesc}{expand_tabs}
104(default: \code{True}) If true, then all tab characters in \var{text}
105will be expanded to spaces using the \method{expandtabs()} method of
106\var{text}.
107\end{memberdesc}
108
109\begin{memberdesc}{replace_whitespace}
110(default: \code{True}) If true, each whitespace character (as defined
111by \code{string.whitespace}) remaining after tab expansion will be
112replaced by a single space. \note{If \member{expand_tabs} is false
113and \member{replace_whitespace} is true, each tab character will be
114replaced by a single space, which is \emph{not} the same as tab
115expansion.}
116\end{memberdesc}
117
118\begin{memberdesc}{initial_indent}
119(default: \code{''}) String that will be prepended to the first line
120of wrapped output. Counts towards the length of the first line.
121\end{memberdesc}
122
123\begin{memberdesc}{subsequent_indent}
124(default: \code{''}) String that will be prepended to all lines of
125wrapped output except the first. Counts towards the length of each
126line except the first.
127\end{memberdesc}
128
129\begin{memberdesc}{fix_sentence_endings}
130(default: \code{False}) If true, \class{TextWrapper} attempts to detect
131sentence endings and ensure that sentences are always separated by
132exactly two spaces. This is generally desired for text in a monospaced
133font. However, the sentence detection algorithm is imperfect: it
134assumes that a sentence ending consists of a lowercase letter followed
135by one of \character{.},
136\character{!}, or \character{?}, possibly followed by one of
137\character{"} or \character{'}, followed by a space. One problem
138with this is algorithm is that it is unable to detect the difference
139between ``Dr.'' in
140
141\begin{verbatim}
142[...] Dr. Frankenstein's monster [...]
143\end{verbatim}
144
145and ``Spot.'' in
146
147\begin{verbatim}
148[...] See Spot. See Spot run [...]
149\end{verbatim}
150
151\member{fix_sentence_endings} is false by default.
152
153Since the sentence detection algorithm relies on
154\code{string.lowercase} for the definition of ``lowercase letter,''
155and a convention of using two spaces after a period to separate
156sentences on the same line, it is specific to English-language texts.
157\end{memberdesc}
158
159\begin{memberdesc}{break_long_words}
160(default: \code{True}) If true, then words longer than
161\member{width} will be broken in order to ensure that no lines are
162longer than \member{width}. If it is false, long words will not be
163broken, and some lines may be longer than \member{width}. (Long words
164will be put on a line by themselves, in order to minimize the amount
165by which \member{width} is exceeded.)
166\end{memberdesc}
167
168\class{TextWrapper} also provides two public methods, analogous to the
169module-level convenience functions:
170
171\begin{methoddesc}{wrap}{text}
172Wraps the single paragraph in \var{text} (a string) so every line is
173at most \member{width} characters long. All wrapping options are
174taken from instance attributes of the \class{TextWrapper} instance.
175Returns a list of output lines, without final newlines.
176\end{methoddesc}
177
178\begin{methoddesc}{fill}{text}
179Wraps the single paragraph in \var{text}, and returns a single string
180containing the wrapped paragraph.
181\end{methoddesc}
Note: See TracBrowser for help on using the repository browser.