[stdlib-sig] textwrap module and hyphenation

Antoine Pitrou solipsis at pitrou.net
Sat Apr 19 21:36:08 CEST 2008

Le samedi 19 avril 2008 à 00:08 -0700, Brett Cannon a écrit :
> On Fri, Apr 18, 2008 at 11:18 PM, Sylvain Fourmanoit
> <syfou at users.sourceforge.net> wrote:
> > I just noticed the textwrap module in the standard library will break and
> >  line-wrap hyphenated words given the opportunity:
> >
> >  >>> from textwrap import wrap
> >  >>> wrap('yaba daba-doo', width=10)
> >  ['yaba daba-', 'doo']


> I personally don't think so as you could easily just walk the list and
> just concatenate the hyphenated words.

But then the words wouldn't be wrapped properly, would they ?
In the above example, if you join the two strings together, the result
is more than 10 chars long.

I think this feature makes sense, and doesn't really clutter the API.
In the meantime, a workaround is to use other unicode hyphens (*) in
order to get the desired result, e.g.:

>>> print(" | ".join(textwrap.wrap('yaba daba-doo', width=10)))
yaba daba- | doo
>>> print(" | ".join(textwrap.wrap('yaba daba\u2010doo', width=10)))
yaba | daba­‐doo

(*) http://www.fileformat.info/info/unicode/char/00ad/index.htm

More information about the stdlib-sig mailing list