Traitement simple des chaînes de caractère en python
Les chaines de caractères
Si ch
est une chaîne de caractères.
find
retourne la position de la chaîne passée en paramètre.lstrip
etrstrip
supprime toutes les occurrences du caractères passé en paramètre respectivement à gauche et à droite.
>>> ch=" bonjour a tous " >>> ch.find("tous") 13 >>> ch.lstrip(' ') 'bonjour a tous ' >>> ch.rstrip(' ') ' bonjour a tous' >>> ch1=ch.lstrip(' ').rstrip(' ') >>> print(ch1) bonjour a tous >>> ch1.find("tous") 10
Une chaîne de caractères peut être traitée comme un tableau de caractères. On peut donc facilement extraire un caractère, ou une sous chaîne :
>>> ch1[10] 't' >>> ch1[3:7] 'jour' >>> ch1[10:] 'tous' >>> ch1[:10] 'bonjour a ' >>> ch1[:10-1] 'bonjour a'
Les expressions régulières
Il s’agit d’une présentation très simplifiée des expressions régulières et de leur utilisation en python. Une présentation détaillée se trouve ici : http://docs.python.org/2/library/re.html
Une expression régulière permet décrire un modèle de chaîne de caractère.
Pour commencer, on peut utiliser :
- des chaînes de caractères :
abc
est vrai pour la chaîneabc
- * pour indiquer la répétition 0 ou n fois :
a*bc
est vrai pour bc, abc, aabc, … - + pour indiquer la répétition 1 ou n fois :
a+bc
est vrai pour abc, aabc, … - ? pour indiquer un élément optionnel :
ab?c
est vrai pour ac et abc - . pour indiquer n’importe quel caractère :
.bc
- [ ] pour indiquer un caractère par un ensemble : [abc] est vrai pour a ou b ou c
- a-z, A-Z, 0-9 indique un caractère dans l’intervalle : [0-9][a-z] est vrai pour un chiffre suivit d’une lettre minuscule.
- les parenthèses peuvent regrouper des éléments.
Vérifier
Pour vérifier si une chaîne de caractères correspond à une expression régulière, il faut importer le module re
(import re
) et comparer avec None
.
>>> re.match("a*bc","abc") != None True >>> re.match("a*bc","bc") != None True >>> re.match("a*bc","abd") != None False
Chercher
Pour chercher un sous chaîne correspondant à une chaîne : re.search
retourne un objet sur lequel on peut appeler start()
ou end()
pour avoir la position de début et de fin du motif.
>>> ch="0345345abdz43534543" >>> m=re.search("[a-z]+",ch) >>> print(m.start) >>> print(m.start()) 7 >>> print(m.end()) 11
Remplacer
Pour remplacer un motif par une valeur on utilise la fonction sub
;
>>> re.sub("[a-z]+",'X',ch) '0345345X43534543'
Découper
Il est aussi possible de découper en fonction d’un séparateur décrit comme une expression régulière :
>>> re.split("[a-z]+",ch) ['0345345', '43534543']
—- dataentry page —- type : Howto technologie_tags : Python theme_tags : Chaînes de caractères, Expressions régulières