1 \section{\module{textwrap
} ---
2 Text wrapping and filling
}
4 \declaremodule{standard
}{textwrap
}
5 \modulesynopsis{Text wrapping and filling
}
6 \moduleauthor{Greg Ward
}{gward@python.net
}
7 \sectionauthor{Greg Ward
}{gward@python.net
}
11 The
\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
15 text strings, the convenience functions should be good enough; otherwise,
16 you should use an instance of
\class{TextWrapper
} for efficiency.
18 \begin{funcdesc
}{wrap
}{text
\optional{, width
\optional{,
\moreargs}}}
19 Wraps the single paragraph in
\var{text
} (a string) so every line is at
20 most
\var{width
} characters long. Returns a list of output lines,
21 without final newlines.
23 Optional keyword arguments correspond to the instance attributes of
24 \class{TextWrapper
}, documented below.
\var{width
} defaults to
28 \begin{funcdesc
}{fill
}{text
\optional{, width
\optional{,
\moreargs}}}
29 Wraps the single paragraph in
\var{text
}, and returns a single string
30 containing the wrapped paragraph.
\function{fill()
} is shorthand for
32 "
\n".join(wrap(text, ...))
35 In particular,
\function{fill()
} accepts exactly the same keyword
36 arguments as
\function{wrap()
}.
39 Both
\function{wrap()
} and
\function{fill()
} work by creating a
40 \class{TextWrapper
} instance and calling a single method on it. That
41 instance is not reused, so for applications that wrap/fill many text
42 strings, it will be more efficient for you to create your own
43 \class{TextWrapper
} object.
45 An additional utility function,
\function{dedent()
}, is provided to
46 remove indentation from strings that have unwanted whitespace to the
49 \begin{funcdesc
}{dedent
}{text
}
50 Remove any whitespace that can be uniformly removed from the left
51 of every line in
\var{text
}.
53 This is typically used to make triple-quoted strings line up with
54 the left edge of screen/whatever, while still presenting it in the
55 source code in indented form.
60 # end first line with \ to avoid the empty line!
65 print repr(s) # prints ' hello
\n world
\n '
66 print repr(dedent(s)) # prints 'hello
\n world
\n'
70 \begin{classdesc
}{TextWrapper
}{...
}
71 The
\class{TextWrapper
} constructor accepts a number of optional
72 keyword arguments. Each argument corresponds to one instance attribute,
75 wrapper = TextWrapper(initial_indent="* ")
79 wrapper = TextWrapper()
80 wrapper.initial_indent = "* "
83 You can re-use the same
\class{TextWrapper
} object many times, and you
84 can change any of its options through direct assignment to instance
85 attributes between uses.
88 The
\class{TextWrapper
} instance attributes (and keyword arguments to
89 the constructor) are as follows:
91 \begin{memberdesc
}{width
}
92 (default:
\code{70}) The maximum length of wrapped lines. As long as
93 there are no individual words in the input text longer than
94 \member{width
},
\class{TextWrapper
} guarantees that no output line
95 will be longer than
\member{width
} characters.
98 \begin{memberdesc
}{expand_tabs
}
99 (default:
\code{True
}) If true, then all tab characters in
\var{text
}
100 will be expanded to spaces using the
\method{expand_tabs()
} method of
104 \begin{memberdesc
}{replace_whitespace
}
105 (default:
\code{True
}) If true, each whitespace character (as defined
106 by
\code{string.whitespace
}) remaining after tab expansion will be
107 replaced by a single space.
\note{If
\member{expand_tabs
} is false
108 and
\member{replace_whitespace
} is true, each tab character will be
109 replaced by a single space, which is
\emph{not
} the same as tab
113 \begin{memberdesc
}{initial_indent
}
114 (default:
\code{''
}) String that will be prepended to the first line
115 of wrapped output. Counts towards the length of the first line.
118 \begin{memberdesc
}{subsequent_indent
}
119 (default:
\code{''
}) String that will be prepended to all lines of
120 wrapped output except the first. Counts towards the length of each
121 line except the first.
124 \begin{memberdesc
}{fix_sentence_endings
}
125 (default:
\code{False
}) If true,
\class{TextWrapper
} attempts to detect
126 sentence endings and ensure that sentences are always separated by
127 exactly two spaces. This is generally desired for text in a monospaced
128 font. However, the sentence detection algorithm is imperfect: it
129 assumes that a sentence ending consists of a lowercase letter followed
130 by one of
\character{.
},
131 \character{!
}, or
\character{?
}, possibly followed by one of
132 \character{"
} or
\character{'
}, followed by a space. One problem
133 with this is algorithm is that it is unable to detect the difference
137 [...
] Dr. Frankenstein's monster
[...
]
143 [...
] See Spot. See Spot run
[...
]
146 \member{fix_sentence_endings
} is false by default.
148 Since the sentence detection algorithm relies on
149 \code{string.lowercase
} for the definition of ``lowercase letter,''
150 and a convention of using two spaces after a period to separate
151 sentences on the same line, it is specific to English-language texts.
154 \begin{memberdesc
}{break_long_words
}
155 (default:
\code{True
}) If true, then words longer than
156 \member{width
} will be broken in order to ensure that no lines are
157 longer than
\member{width
}. If it is false, long words will not be
158 broken, and some lines may be longer than
\member{width
}. (Long words
159 will be put on a line by themselves, in order to minimize the amount
160 by which
\member{width
} is exceeded.)
163 \class{TextWrapper
} also provides two public methods, analogous to the
164 module-level convenience functions:
166 \begin{methoddesc
}{wrap
}{text
}
167 Wraps the single paragraph in
\var{text
} (a string) so every line is
168 at most
\member{width
} characters long. All wrapping options are
169 taken from instance attributes of the
\class{TextWrapper
} instance.
170 Returns a list of output lines, without final newlines.
173 \begin{methoddesc
}{fill
}{text
}
174 Wraps the single paragraph in
\var{text
}, and returns a single string
175 containing the wrapped paragraph.