textwrap3
is a compatibility back-port of Python 3.6's textwrap
module that supports Python 2.6 forward. (Though honestly, if you're not
already using at least 2.7, you're way behind the times!)
This makes a few new
APIs such as shorten
and the max_lines
parameter available
in a compatible way to all Python versions typically in current use.
Import and use it like you would textwrap
from the standard library:
from textwrap3 import wrap text = 'long text here...' print(wrap(text, 40))
The standard textwrap documentation is the best reference material.
By design, Python 3 sensibilities and expectations rule. Especially when
processing text that includes Unicode characters, textwrap3
's results may
differ a bit from those of the textwrap
of the underlying Python version
(esp. 2.x). In particular, textwrap3
uses the re.UNICODE
flag so that
non-ASCII characters such as accented letters are considered legitimate word
characters.
It also adds one tweak, considering the Unicode em-dash
('\N{EM DASH}'
or u'\u2014'
) identical to the simulated ASCII em-dash
'--'
.
- See
CHANGES.yml
for the Change Log. - This module is almost entirely the work of Gregory P. Ward
(
textwrap
's original author) plus enhancements from the Python community. This separate packaging is just a delivery and compatibility vehicle. It contributes cross-Python version compatibility shims, a few additional tests, and better handling of real em-dashes. The vast majority of functionality still comes from the standardtextwrap
code base, as of the Python 3.6 release.
To install or upgrade to the latest version:
pip install -U textwrap3
You may need to prefix these with sudo
to authorize
installation. In environments without super-user privileges, you may want to
use pip
's --user
option, to install only for a single user, rather
than system-wide. Depending on your system configuration, you may also
need to use separate pip2
and pip3
programs to install for Python
2 and 3 respectively.