IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Les bases de la programmation Python par l’exemple


précédentsommairesuivant

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 :
 
Sélectionnez
1.
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.
 
Sélectionnez
1.
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électionnez
    1.
    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 sentence
    True
    >>> 'this' in sentence
    False
    >>> 'This' in sentence
    True
    >>> 'this' in sentence.lower()
    True
    >>> 'is a' in sentence
    True
    >>> 'test' not in sentence
    True
  • Obtenir le nombre d’occurrences dans une séquence.

     
    Sélectionnez
    1.
    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électionnez
    1.
    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électionnez
    1.
    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 s in line.strip('{}').split()]
    >>> nums
    [1.0, 2.0, 3.0]
    
  • Joindre des listes de chaînes.

     
    Sélectionnez
    1.
    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.
 
Sélectionnez
1.
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'

précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2018 Sundeep Agarwal. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.