
En Python, pour envelopper ou tronquer une chaîne à une largeur donnée (= nombre de caractères), utilisez le module textwrap de la bibliothèque standard.
Cet article décrit le contenu suivant.
- Enveloppez une chaîne :
wrap(), fill() - Tronquer une chaîne :
shorten() - Objet TextWrapperTextWrapper object
 
Si vous souhaitez écrire de longues chaînes sur plusieurs lignes dans le code plutôt que dans la sortie, consultez l’article suivant.
Le module pprint est utile pour formater et produire des listes et des dictionnaires. Voir l’article suivant.
Enveloppez une chaîne :wrap(), fill()
Avec la fonction wrap() du module textwrap, vous pouvez obtenir une liste divisée par des sauts de mots pour s’adapter à un nombre donné de caractères.
Spécifiez le nombre de caractères pour la largeur du deuxième argument. La valeur par défaut est largeur=70.
import textwrap
s = "Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages"
s_wrap_list = textwrap.wrap(s, 40)
print(s_wrap_list)
# ['Python can be easy to pick up whether', "you're a first time programmer or you're", 'experienced with other languages']
Utilisez ‘n’.join(list) pour obtenir la chaîne avec le code de saut de ligne n.
print('n'.join(s_wrap_list))
# Python can be easy to pick up whether
# you're a first time programmer or you're
# experienced with other languages
La fonction fill() renvoie une chaîne avec des sauts de ligne, pas une liste. C’est la même chose que ‘n’.join(list) après wrap() comme dans l’exemple ci-dessus.
C’est pratique lorsque vous n’avez pas besoin d’une liste et que vous souhaitez générer une chaîne à largeur fixe.
print(textwrap.fill(s, 40))
# Python can be easy to pick up whether
# you're a first time programmer or you're
# experienced with other languages
Si l’argument max_line est spécifié, les lignes suivantes sont omises.
print(textwrap.wrap(s, 40, max_lines=2))
# ['Python can be easy to pick up whether', "you're a first time programmer or [...]"]
print(textwrap.fill(s, 40, max_lines=2))
# Python can be easy to pick up whether
# you're a first time programmer or [...]
S’il est omis, par défaut, ‘ […]’ est affiché à la fin. Il peut être remplacé par n’importe quelle chaîne avec l’argument d’espace réservé.
print(textwrap.fill(s, 40, max_lines=2, placeholder=' ~'))
# Python can be easy to pick up whether
# you're a first time programmer or ~
L’argument initial_indent peut être utilisé pour spécifier une chaîne à ajouter au début de la première ligne. Il est utilisé lorsque vous souhaitez mettre en retrait le début d’un paragraphe.
print(textwrap.fill(s, 40, max_lines=2, placeholder=' ~', initial_indent='  '))
#   Python can be easy to pick up whether
# you're a first time programmer or ~
Pour d’autres paramètres détaillés, veuillez vous référer à la documentation officielle.
Tronquer une chaîne :shorten()
Si vous souhaitez raccourcir une chaîne en la tronquant, utilisez la fonction shorten() du module textwrap.
Il peut être tronqué mot par mot pour tenir dans un nombre donné de caractères avec l’espace réservé. L’espace réservé est ‘ […]’, par défaut, et peut être défini avec l’argument d’espace réservé.
s = 'Python is powerful'
print(textwrap.shorten(s, 12))
# Python [...]
print(textwrap.shorten(s, 12, placeholder=' ~'))
# Python is ~
Objet TextWrapperTextWrapper object
Si vous faites wrap() ou fill() plusieurs fois avec les mêmes paramètres, il est plus efficace de créer un objet TextWrapper.
wrapper = textwrap.TextWrapper(width=30, max_lines=3, placeholder=' ~', initial_indent='  ')
s = "Python can be easy to pick up whether you're a first time programmer or you're experienced with other languages"
print(wrapper.wrap(s))
# ['  Python can be easy to pick', "up whether you're a first time", "programmer or you're ~"]
print(wrapper.fill(s))
#   Python can be easy to pick
# up whether you're a first time
# programmer or you're ~
