Text Processing in Python (D. Mertz)

Pour avoir des idées concernant l’efficacité en matière de traitement de textes en Python (mais aussi d’autres langages) il faut lire le livre de David Mertz. Quand il s’agit de text processing je ne parle pas d’un logiciel comme Microsoft Word ou Libre Office, mais de codes pour traiter des textes ASCII ou Unicode. C’est un livre qui est ancien (édition 2003) et qu’il faut lire avec une dose de relativité, car Python a évolué coté implémentation.

Publications initiales : buidez.net (2012), revu et mis à jour en 2024-2025.

Une première partie (sur deux chapitres, 200 pages) correspond à une description des modules standard de la distribution Python, puis des fonctions liées aux chaines de caractère. Les fonctions et classes sont regroupées par thèmes (common tasks) puis les définitions (API) viennent, associées à des petits exemples. La mise en page limite l’utilisation de cette partie en mode livre, elle serait plus lisible dans un fichier PDF.

Le chapitre 3 (30 pages) traite des expressions régulières avec l’avantage d’éviter les exemples vus et revus et d’amener graduellement le lecteur à aborder des cas concrets dans quelques domaines : supprimer l’indentation, traiter une ligne de commande, détecter des mots dupliqués, analyser des URLs, du code … C’est un très bon texte sur le sujet, il manquera certainement une table récapitulative et synthétique des ‘recettes’. Mais une API est présente comme dans les deux premiers chapitres, et finalement ce n’est pas inutile car comme dans le cas précédent la description des classes et fonctions est accompagnée de petits exemples qui peuvent aider a en préciser l’utilisation et la syntaxe.

Le chapitre 4 aborde l’utilisation d’automates à états finis pour le traitement de texte et la création de parseurs. Il permet d’aborder des outils comme mxTextTools d’eGenix qui restent d’actualité, des notions d’analyse lexicale, de parseurs, de grammaire EBNF (extended Backus-Naur form) …

Les chapitres suivants sont moins intéressants (email, newsgroup, www, XML … revue sur Python …) aujourd’hui car ils sont relèvent de l’histoire informatique. Une dernière partie couvre la compression des données, la compréhension d’Unicode. Puis nous trouvons un exemple de programmation pour transformer le livre en un document HTML tout en utilisant les concepts développés au chapitre 4, avec reprise de la typographie. Le site Gnosis software (section TPiP) fournissait encore en 2025 une version smart ASCII (une mise en page et un balisage légers un peu comme du texte reStructuredText) du livre et les exemples de code.

Conclusion

Je ne mettrais pas ce livre entre toutes les mains, il ne faut pas y chercher des éléments à utiliser dans l’immédiateté. Des problèmes sont proposés, mais sans solution, ce qui est dommage. Mais plus de 20 ans plus tard, optimisé avec un peu d’IA en support, c’est encore un très bon livre d’auto-apprentissage si on a le temps de le lire et de se l’approprier. D’autant plus que l’auteur traite le sujet dans son ensemble, il ne s’agit pas d’un manuel sur les expressions régulières ou les automates, mais toutes les méthodes (incluant les basiques sur les chaines) sont envisagées de manière à ce que le programmeur puisse les combiner en connaissance de cause.

Liens et lectures
Retour en haut