Cours de Python / Manipuler les chaînes : index, tranches, méthodes et f-strings
Une chaîne Python est une valeur textuelle ordonnée que l’on peut lire par index ou par tranche. Elle est immuable : strip() et replace() fournissent un résultat à utiliser ou à affecter, sans modifier la chaîne d’origine.
Repérer les positions et les limites d’une tranche
Le premier élément porte l’index 0 et le dernier l’index -1. Une tranche text[start:stop] s’arrête avant stop. Ce petit exemple peut être exécuté dans un fichier Python ou dans l’interpréteur :
text = "Python"
print(text[0], text[-1], text[1:4])
La sortie est P n yth : l’index 0 donne P, l’index -1 donne n et la tranche 1:4 prend les positions 1, 2 et 3. Une lecture individuelle hors limites, comme text[99], lève une IndexError. Une tranche telle que text[1:99] conserve simplement la partie disponible, ici ython.
La longueur d’un str compte les points de code Unicode, pas les octets. Une lettre accentuée composée ou un emoji peut contenir plusieurs points de code tout en formant un seul caractère visible. L’indexation n’est donc pas une méthode universelle pour découper les caractères perçus à l’écran. La référence du type str et de ses méthodes précise ces opérations.
Nettoyer et afficher une entrée complète
Python 3 suffit, sans paquet supplémentaire. Enregistrez le bloc suivant dans strings.py en UTF-8, dans un dossier d’exercice. Ouvrez un terminal dans ce dossier avec l’environnement virtuel du projet activé, puis lancez python strings.py. Sur macOS ou Ubuntu hors environnement virtuel, utilisez python3 si c’est le nom de votre interpréteur.
raw = " lunch,8000 "
clean = raw.strip()
name, amount_text = clean.split(",")
amount = int(amount_text)
print(clean)
print(name.upper())
print(f"{name}: {amount:,} KRW")
print("-".join(["2026", "10", "17"]))
La sortie attendue est :
lunch,8000
LUNCH
lunch: 8,000 KRW
2026-10-17
raw contient les espaces initiaux et finaux ; clean reçoit le résultat nettoyé. Le séparateur virgule donne deux textes, lunch et 8000. Le programme convertit le second en entier avant de le formater. lunch signifie « déjeuner » et KRW désigne le won sud-coréen ; le programme n’effectue aucune conversion de monnaie.
Dans {amount:,}, la virgule demande un regroupement des milliers : 8,000 représente huit mille. Ce format n’est pas automatiquement remplacé par les conventions françaises. Enfin, "-".join(...) intercale un tiret entre trois textes pour produire 2026-10-17 ; cela assemble une chaîne sans valider qu’il s’agit d’une date correcte.
Choisir entre découpage, assemblage et analyse de format
split(",") renvoie une liste de fragments séparés par des virgules. join() assemble une suite de chaînes avec un séparateur. Chaque élément doit être un texte : joindre directement une liste contenant un entier provoque une TypeError. Convertissez les valeurs intentionnellement plutôt que de supposer une conversion implicite.
Ce découpage convient au format simple de l’exemple. Il ne comprend ni les guillemets qui protègent une virgule dans un champ CSV, ni les champs sur plusieurs lignes. Pour un fichier de valeurs séparées par des virgules, utilisez le module csv de la bibliothèque standard, avec les règles de séparateur et de guillemets du fichier. La normalisation du texte et la validation du nombre et du sens des champs restent des étapes distinctes.
Une f-string construit facilement un message destiné à une personne. Les règles de formatage des valeurs décrivent ses options d’affichage. Pour transmettre des valeurs à une base de données, utilisez en revanche les paramètres fournis par le connecteur SQL. Insérer directement une saisie extérieure dans une requête par f-string confond le texte de la requête et ses données.
Conserver l’original et vérifier les erreurs
Appeler seulement raw.strip() puis ignorer sa valeur de retour laisse raw inchangé. Il en va de même pour replace. Les noms raw et clean montrent les deux rôles ; si vous souhaitez remplacer la valeur liée au même nom, écrivez une affectation explicite telle que raw = raw.strip().
- Ajoutez uniquement des espaces au début et à la fin de la valeur de raw. La sortie doit rester identique. Rétablissez ensuite le texte initial.
- Retirez la virgule entre lunch et 8000. split ne fournit plus deux champs, et l’affectation à
name, amount_textlève une ValueError avant l’affichage. Remettez la virgule et vérifiez les quatre lignes de sortie. - Ajoutez une deuxième virgule et un troisième champ. Le déballage dans deux variables échoue aussi, cette fois parce qu’il y a trop de valeurs. Revenez aux deux champs initiaux.
- Dans le petit exemple avec
text = "Python", essayeztext[0] = "p". Python lève une TypeError, car on ne peut pas remplacer un élément du str sur place. Retirez cette affectation pour restaurer l’exemple.
Une entrée dont le montant est vide ou non numérique passe éventuellement le découpage mais échoue lors de int(amount_text). L’explication des conversions numériques aide à distinguer cette erreur d’une erreur de structure des champs. Relevez l’instruction qui échoue avant de décider comment signaler une saisie invalide.




