{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "[prev: Qu'est-ce qu'un module ?](intro.ipynb) | [home](../index.ipynb) | [next: *Data Types*](stdlib-data-types.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# *String Services*\n", "Ensemble de modules utiles pour la manipulation de chaînes de caractères." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exemple des *regular expressions*\n", "\n", "Les *regular expressions* (ou *regexp*) sont des chaînes de caractères codifiées décrivant des ensembles de chaînes de caractères \"de base\".\n", "\n", "Elles permettent de retrouver rapidement un ensemble de caractères dans une chaîne." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# On importe le module\n", "import re" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'3.1415926536'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# On cherche un flottant dans une chaine de caractères\n", "chaine = 'La valeur de pi à 10 décimales près est 3.1415926536. Très intéressant, non?'\n", "re_float = '\\d+.\\d+'\n", "valeur_pi = re.search(re_float,chaine)\n", "valeur_pi.group()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Mais', 'qui', 'a', 'mis', 'le', 'bazard', 'dans', 'cette', 'chaine?']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# On extrait tous les mots d'une phrase\n", "chaine = 'Mais qui+ a::mis -le%$¨bazard!!dans~~cette789chaine?'\n", "re_word = '[a-zA-Z\\?]+'\n", "mots = re.findall(re_word,chaine)\n", "mots" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Farid est vraiment mon animateur préféré.\n", "Théophile est vraiment mon animateur préféré.\n" ] } ], "source": [ "# On peut remplacer une séquence par une autre\n", "chaine = 'Farid est vraiment mon animateur préféré.'\n", "print(chaine)\n", "chaine = re.sub('Farid','Théophile',chaine)\n", "print(chaine)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Les *regexp* prennent tout leur intérêt dans le traitement de grandes chaînes de caractères.\n", "\n", "Elles sont notamment utiles pour accéder rapidement à une donnée précise dans un gros fichier." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercices" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 4 }