Motifs de manipulation de chaînes
Les testeurs vivent dans le texte — lignes de log, lignes CSV, URLs, extraits JSON. Une petite poignée de motifs de chaîne gère presque tout, et aucun n'est difficile.
L'idée, en une ligne
Vous faites surtout quatre choses au texte : en saisir un morceau, le découper, le nettoyer, et construire une nouvelle chaîne à partir des morceaux.
Index & tranche — saisir un morceau
s[0] est le premier caractère, s[-1] le dernier. Une tranche s[start:end] garde start et s'arrête juste avant end, donc "Python"[0:2] fait "Py". Le tranchage ne plante jamais sur des nombres hors limites — il vous donne juste ce qu'il peut.
Split & join — le duo de travail
text.split(",")transforme"a,b,c"en["a", "b", "c"]",".join(parts)recoud une liste en"a,b,c"
Vous parsez une ligne de log ? Découpez-la. Vous construisez une ligne de rapport ? Joignez-la.
Nettoyer & chercher
strip()enlève les espaces et sauts de ligne aux extrémitéslower()/upper()corrigent la casse pour que"PASS"et"pass"comptent comme égauxreplace(old, new)remplace un morceau de texte par un autre"ERROR" in linevérifie si un mot apparaît dans le texte
Construire des résultats avec les f-strings
Une f-string comme f"{name}: {status}" insère les valeurs directement dans le texte — mettez juste un f devant les guillemets et vos noms entre { }. Quand vous collez beaucoup de morceaux, rassemblez-les dans une liste et faites un join une seule fois à la fin.
Voyez-le à l'œuvre
# Turn a raw log line into fields, then rebuild a clean summary
line = " 2024-05-01,ERROR,login timed out "
parts = line.strip().split(",") # ['2024-05-01', 'ERROR', 'login timed out']
date, level, message = parts # unpack into three names
# Fix the case, then test it
if level.lower() == "error":
print(f"[{date}] {message.upper()}")
# 'in' checks for a word; replace swaps text
if "timed out" in message:
print(message.replace("timed out", "TIMEOUT"))
# Build one report row from many fields
print(" | ".join([date, level, "login"]))Lisez-le de haut en bas : vous avez nettoyé la ligne, l'avez découpée en champs, vérifié et remodelé le texte, puis rejoint les morceaux en une ligne propre. C'est toute la boucle du travail avec le texte.
Avancé — pourquoi join bat le collage avec +
Parce que les chaînes ne peuvent pas changer sur place, chaque + dans une boucle construit une toute nouvelle chaîne et jette l'ancienne. Faites ça mille fois et ça s'accumule. "".join(list_of_pieces) construit le résultat d'un coup à la place — plus propre à lire et plus rapide quand il y a beaucoup de morceaux. Utilisez join chaque fois que vous assemblez du texte dans une boucle.
Basé sur le tutoriel Python officiel & les références courantes des méthodes de chaîne