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'
in
sentenceTrue
>>>
'this'
in
sentenceFalse
>>>
'This'
in
sentenceTrue
>>>
'this'
in
sentence.lower
(
)True
>>>
'is a'
in
sentenceTrue
>>>
'test'
not
in
sentenceTrue
-
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)for
sin
line.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'