~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-2.7.11-docs-html/_sources/library/textwrap.txt

  • Committer: Dave Kuhlman
  • Date: 2016-02-11 21:17:09 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20160211211709-03yaen3cjempbi2m
Updated Python 2.7 docs; added Python 3.5 docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
:mod:`textwrap` --- Text wrapping and filling
 
2
=============================================
 
3
 
 
4
.. module:: textwrap
 
5
   :synopsis: Text wrapping and filling
 
6
.. moduleauthor:: Greg Ward <gward@python.net>
 
7
.. sectionauthor:: Greg Ward <gward@python.net>
 
8
 
 
9
.. versionadded:: 2.3
 
10
 
 
11
**Source code:** :source:`Lib/textwrap.py`
 
12
 
 
13
--------------
 
14
 
 
15
The :mod:`textwrap` module provides two convenience functions, :func:`wrap` and
 
16
:func:`fill`, as well as :class:`TextWrapper`, the class that does all the work,
 
17
and a utility function  :func:`dedent`.  If you're just wrapping or filling one
 
18
or two  text strings, the convenience functions should be good enough;
 
19
otherwise,  you should use an instance of :class:`TextWrapper` for efficiency.
 
20
 
 
21
.. function:: wrap(text[, width[, ...]])
 
22
 
 
23
   Wraps the single paragraph in *text* (a string) so every line is at most *width*
 
24
   characters long.  Returns a list of output lines, without final newlines.
 
25
 
 
26
   Optional keyword arguments correspond to the instance attributes of
 
27
   :class:`TextWrapper`, documented below.  *width* defaults to ``70``.
 
28
 
 
29
   See the :meth:`TextWrapper.wrap` method for additional details on how
 
30
   :func:`wrap` behaves.
 
31
 
 
32
 
 
33
.. function:: fill(text[, width[, ...]])
 
34
 
 
35
   Wraps the single paragraph in *text*, and returns a single string containing the
 
36
   wrapped paragraph.  :func:`fill` is shorthand for  ::
 
37
 
 
38
      "\n".join(wrap(text, ...))
 
39
 
 
40
   In particular, :func:`fill` accepts exactly the same keyword arguments as
 
41
   :func:`wrap`.
 
42
 
 
43
Both :func:`wrap` and :func:`fill` work by creating a :class:`TextWrapper`
 
44
instance and calling a single method on it.  That instance is not reused, so for
 
45
applications that wrap/fill many text strings, it will be more efficient for you
 
46
to create your own :class:`TextWrapper` object.
 
47
 
 
48
Text is preferably wrapped on whitespaces and right after the hyphens in
 
49
hyphenated words; only then will long words be broken if necessary, unless
 
50
:attr:`TextWrapper.break_long_words` is set to false.
 
51
 
 
52
An additional utility function, :func:`dedent`, is provided to remove
 
53
indentation from strings that have unwanted whitespace to the left of the text.
 
54
 
 
55
 
 
56
.. function:: dedent(text)
 
57
 
 
58
   Remove any common leading whitespace from every line in *text*.
 
59
 
 
60
   This can be used to make triple-quoted strings line up with the left edge of the
 
61
   display, while still presenting them in the source code in indented form.
 
62
 
 
63
   Note that tabs and spaces are both treated as whitespace, but they are not
 
64
   equal: the lines ``"  hello"`` and ``"\thello"`` are considered to have no
 
65
   common leading whitespace.  (This behaviour is new in Python 2.5; older versions
 
66
   of this module incorrectly expanded tabs before searching for common leading
 
67
   whitespace.)
 
68
 
 
69
   For example::
 
70
 
 
71
      def test():
 
72
          # end first line with \ to avoid the empty line!
 
73
          s = '''\
 
74
          hello
 
75
            world
 
76
          '''
 
77
          print repr(s)          # prints '    hello\n      world\n    '
 
78
          print repr(dedent(s))  # prints 'hello\n  world\n'
 
79
 
 
80
 
 
81
.. class:: TextWrapper(...)
 
82
 
 
83
   The :class:`TextWrapper` constructor accepts a number of optional keyword
 
84
   arguments.  Each argument corresponds to one instance attribute, so for example
 
85
   ::
 
86
 
 
87
      wrapper = TextWrapper(initial_indent="* ")
 
88
 
 
89
   is the same as  ::
 
90
 
 
91
      wrapper = TextWrapper()
 
92
      wrapper.initial_indent = "* "
 
93
 
 
94
   You can re-use the same :class:`TextWrapper` object many times, and you can
 
95
   change any of its options through direct assignment to instance attributes
 
96
   between uses.
 
97
 
 
98
   The :class:`TextWrapper` instance attributes (and keyword arguments to the
 
99
   constructor) are as follows:
 
100
 
 
101
 
 
102
   .. attribute:: width
 
103
 
 
104
      (default: ``70``) The maximum length of wrapped lines.  As long as there
 
105
      are no individual words in the input text longer than :attr:`width`,
 
106
      :class:`TextWrapper` guarantees that no output line will be longer than
 
107
      :attr:`width` characters.
 
108
 
 
109
 
 
110
   .. attribute:: expand_tabs
 
111
 
 
112
      (default: ``True``) If true, then all tab characters in *text* will be
 
113
      expanded to spaces using the :meth:`expandtabs` method of *text*.
 
114
 
 
115
 
 
116
   .. attribute:: replace_whitespace
 
117
 
 
118
      (default: ``True``) If true, after tab expansion but before wrapping,
 
119
      the :meth:`wrap` method will replace each whitespace character
 
120
      with a single space.  The whitespace characters replaced are
 
121
      as follows: tab, newline, vertical tab, formfeed, and carriage
 
122
      return (``'\t\n\v\f\r'``).
 
123
 
 
124
      .. note::
 
125
 
 
126
         If :attr:`expand_tabs` is false and :attr:`replace_whitespace` is true,
 
127
         each tab character will be replaced by a single space, which is *not*
 
128
         the same as tab expansion.
 
129
 
 
130
      .. note::
 
131
 
 
132
         If :attr:`replace_whitespace` is false, newlines may appear in the
 
133
         middle of a line and cause strange output. For this reason, text should
 
134
         be split into paragraphs (using :meth:`str.splitlines` or similar)
 
135
         which are wrapped separately.
 
136
 
 
137
 
 
138
   .. attribute:: drop_whitespace
 
139
 
 
140
      (default: ``True``) If true, whitespace at the beginning and ending of
 
141
      every line (after wrapping but before indenting) is dropped.
 
142
      Whitespace at the beginning of the paragraph, however, is not dropped
 
143
      if non-whitespace follows it.  If whitespace being dropped takes up an
 
144
      entire line, the whole line is dropped.
 
145
 
 
146
      .. versionadded:: 2.6
 
147
         Whitespace was always dropped in earlier versions.
 
148
 
 
149
 
 
150
   .. attribute:: initial_indent
 
151
 
 
152
      (default: ``''``) String that will be prepended to the first line of
 
153
      wrapped output.  Counts towards the length of the first line.  The empty
 
154
      string is not indented.
 
155
 
 
156
 
 
157
   .. attribute:: subsequent_indent
 
158
 
 
159
      (default: ``''``) String that will be prepended to all lines of wrapped
 
160
      output except the first.  Counts towards the length of each line except
 
161
      the first.
 
162
 
 
163
 
 
164
   .. attribute:: fix_sentence_endings
 
165
 
 
166
      (default: ``False``) If true, :class:`TextWrapper` attempts to detect
 
167
      sentence endings and ensure that sentences are always separated by exactly
 
168
      two spaces.  This is generally desired for text in a monospaced font.
 
169
      However, the sentence detection algorithm is imperfect: it assumes that a
 
170
      sentence ending consists of a lowercase letter followed by one of ``'.'``,
 
171
      ``'!'``, or ``'?'``, possibly followed by one of ``'"'`` or ``"'"``,
 
172
      followed by a space.  One problem with this is algorithm is that it is
 
173
      unable to detect the difference between "Dr." in ::
 
174
 
 
175
         [...] Dr. Frankenstein's monster [...]
 
176
 
 
177
      and "Spot." in ::
 
178
 
 
179
         [...] See Spot. See Spot run [...]
 
180
 
 
181
      :attr:`fix_sentence_endings` is false by default.
 
182
 
 
183
      Since the sentence detection algorithm relies on ``string.lowercase`` for
 
184
      the definition of "lowercase letter," and a convention of using two spaces
 
185
      after a period to separate sentences on the same line, it is specific to
 
186
      English-language texts.
 
187
 
 
188
 
 
189
   .. attribute:: break_long_words
 
190
 
 
191
      (default: ``True``) If true, then words longer than :attr:`width` will be
 
192
      broken in order to ensure that no lines are longer than :attr:`width`.  If
 
193
      it is false, long words will not be broken, and some lines may be longer
 
194
      than :attr:`width`.  (Long words will be put on a line by themselves, in
 
195
      order to minimize the amount by which :attr:`width` is exceeded.)
 
196
 
 
197
 
 
198
   .. attribute:: break_on_hyphens
 
199
 
 
200
      (default: ``True``) If true, wrapping will occur preferably on whitespaces
 
201
      and right after hyphens in compound words, as it is customary in English.
 
202
      If false, only whitespaces will be considered as potentially good places
 
203
      for line breaks, but you need to set :attr:`break_long_words` to false if
 
204
      you want truly insecable words.  Default behaviour in previous versions
 
205
      was to always allow breaking hyphenated words.
 
206
 
 
207
      .. versionadded:: 2.6
 
208
 
 
209
 
 
210
   :class:`TextWrapper` also provides two public methods, analogous to the
 
211
   module-level convenience functions:
 
212
 
 
213
   .. method:: wrap(text)
 
214
 
 
215
      Wraps the single paragraph in *text* (a string) so every line is at most
 
216
      :attr:`width` characters long.  All wrapping options are taken from
 
217
      instance attributes of the :class:`TextWrapper` instance.  Returns a list
 
218
      of output lines, without final newlines.  If the wrapped output has no
 
219
      content, the returned list is empty.
 
220
 
 
221
 
 
222
   .. method:: fill(text)
 
223
 
 
224
      Wraps the single paragraph in *text*, and returns a single string
 
225
      containing the wrapped paragraph.
 
226