IX. Manipulation du texte▲
Dans ce chapitre, nous allons :
- utiliser les méthodes de chaînes ;
- mettre en oeuvre les expressions régulières ;
- chercher et extraire des séquences ;
- chercher à en remplacer ;
- compiler des expressions régulières ;
- approfondir les expressions régulières.
IX-A. Méthodes de chaînes▲
-
Pour modifier des caractères, utiliser :
- str.maketrans() pour créer une table de traduction ;
- translate() pour effectuer les modifications de caractères suivant la table de transformation.
- Le 1er argument à donner à maketrans() est la chaîne de caractères à remplacer, le deuxième, les caractères de remplacement et le 3e constitue la liste des caractères à supprimer.
- Quelques exemples :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
>>> greeting = '===== Have a great day ====='
>>> greeting.translate(str.maketrans('=', '-'))
'----- Have a great day -----'
>>> greeting = '===== Have a great day!! ====='
>>> greeting.translate(str.maketrans('=', '-', '!'))
'----- Have a great day -----'
>>> import string
>>> quote = 'SIMPLICITY IS THE ULTIMATE SOPHISTICATION'
>>> tr_table = str.maketrans(string.ascii_uppercase, string.ascii_lowercase)
>>> quote.translate(tr_table)
'simplicity is the ultimate sophistication'
>>> sentence = "Thi1s is34 a senten6ce"
>>> sentence.translate(str.maketrans('', '', string.digits))
'This is a sentence'
>>> greeting.translate(str.maketrans('', '', string.punctuation))
' Have a great day '
- Le code ci-après permet d’enlever les premiers caractères/les derniers/les deux.
- Seuls les caractères consécutifs du début ou de la fin sont enlevés.
- Par défaut, les espaces vides sont supprimés.
- Si plusieurs caractères sont spécifiés, ils sont traités comme un ensemble et toutes les combinaisons fonctionnent.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
>>> greeting = ' Have a nice day :) '
>>> greeting.strip()
'Have a nice day :)'
>>> greeting.rstrip()
' Have a nice day :)'
>>> greeting.lstrip()
'Have a nice day :) '
>>> greeting.strip(') :')
'Have a nice day'
>>> greeting = '===== Have a great day!! ====='
>>> greeting.strip('=')
' Have a great day!! '
- Formatage.
-
Argument de largeur spécifiant la longueur totale de la sortie.
Sélectionnez>>>' Hello World '.center(40,'*')'************* Hello World **************' -
Modification de la casse et vérification de celle-ci.
Sélectionnez1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.>>>sentence='thIs iS a saMple StrIng'>>>sentence.capitalize()'This is a sample string'>>>sentence.title()'This Is A Sample String'>>>sentence.lower()'this is a sample string'>>>sentence.upper()'THIS IS A SAMPLE STRING'>>>sentence.swapcase()'THiS Is A SAmPLE sTRiNG'>>>'good'.islower()True>>>'good'.isupper()False -
Vérifier si la saisie est constituée de caractères numériques.
Sélectionnez>>>'1'.isnumeric()True>>>'abc1'.isnumeric()False>>>'1.2'.isnumeric()False -
Vérifier si une séquence de caractères est présente ou non.
Sélectionnez>>>sentence='This is a sample string'>>>'is'insentenceTrue>>>'this'insentenceFalse>>>'This'insentenceTrue>>>'this'insentence.lower()True>>>'is a'insentenceTrue>>>'test'notinsentenceTrue -
Obtenir le nombre d’occurrences dans une séquence.
Sélectionnez1.
2.
3.
4.
5.
6.
7.
8.
9.>>>sentence='This is a sample string'>>>sentence.count('is')2>>>sentence.count('w')0>>>word='phototonic'>>>word.count('oto')1 -
Vérifier la présence d’une séquence au début ou à la fin d’une chaîne de caractères.
Sélectionnez1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.>>>sentence'This is a sample string'>>>sentence.startswith('This')True>>>sentence.startswith('The')False>>>sentence.endswith('ing')True>>>sentence.endswith('ly')False -
Séparer une chaîne de caractères à partir d’un caractère ou une série de caractères.
-
Renvoie une liste.
-
Pour séparer une chaîne à partir d’une expression régulière, utilisez plutôt re.spit().
Sélectionnez1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.>>>sentence='This is a sample string'>>>sentence.split() ['This','is','a','sample','string']>>>"oranges:5".split(':') ['oranges','5']>>>"oranges :: 5".split(' :: ') ['oranges','5']>>>"a e i o u".split(' ', maxsplit=1) ['a','e i o u']>>>"a e i o u".split(' ', maxsplit=2) ['a','e','i o u']>>>line='{1.0 2.0 3.0}'>>>nums=[float(s)forsinline.strip('{}').split()]>>>nums [1.0,2.0,3.0] -
Joindre des listes de chaînes.
Sélectionnez1.
2.
3.
4.
5.
6.
7.
8.
9.
10.>>>str_list ['This','is','a','sample','string']>>>' '.join(str_list)'This is a sample string'>>>'-'.join(str_list)'This-is-a-sample-string'>>>c=' :: '>>>c.join(str_list)'This :: is :: a :: sample :: string' -
Remplacer des caractères.
-
Le 3e argument précise combien de fois le remplacement doit être effectué.
- La variable doit être spécifiquement réassignée pour que sa valeur soit changée.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
>>> phrase = '2 be or not 2 be'
>>> phrase.replace('2', 'to')
'to be or not to be'
>>> phrase
'2 be or not 2 be'
>>> phrase.replace('2', 'to', 1)
'to be or not 2 be'
>>> phrase = phrase.replace('2', 'to')
>>> phrase
'to be or not to be'


