Recherche et test de chaînes de caractères

8.3 Recherche et test de chaînes de caractères

Objectifs d'apprentissage

À la fin de cette section, vous devriez être capable de :

  • Utiliser l'opérateur in pour déterminer si une chaîne donnée contient une sous-chaîne.
  • Appeler la méthode count() pour compter le nombre de sous-chaînes dans une chaîne donnée.
  • Rechercher dans une chaîne pour trouver une sous-chaîne à l'aide de la méthode find().
  • Utiliser la méthode index() pour trouver l'indice de la première occurrence d'une sous-chaîne dans une chaîne donnée.
  • Écrire une boucle for sur des chaînes de caractères à l'aide de l'opérateur in.

Opérateur in

L'opérateur booléen in peut être utilisé pour vérifier si une chaîne de caractères contient une autre chaîne. in renvoie True si la première chaîne existe dans la deuxième chaîne, et False dans le cas contraire.

Faites le point

Que contient la phrase ?

Concepts en pratique

Utiliser l'opérateur in pour trouver des sous-chaînes

1.
Quelle est la sortie de ("a" in "an umbrella") ?
  1. 2
  2. False
  3. True
  4. 1
2.
Quelle est la sortie de ("ab" in "arbitrary") ?
  1. True
  2. False
3.
Quelle est la sortie de ("" in "string") ?
  1. True
  2. False

Boucle for utilisant l'opérateur in

L'opérateur in peut être utilisé pour itérer sur les caractères d'une chaîne à l'aide d'une boucle for. À chaque itération de la boucle for, un caractère est lu et devient la variable de boucle pour cette itération.

Faites le point

Boucle for utilisant l'opérateur in

Concepts en pratique

Utiliser l'opérateur in dans une boucle for

4.
Quelle est la sortie du code suivant ?
for c in "string":
  print(c, end = "")
  1. string
  2. s
    t
    r
    i
    n
    g
  3. s t r i n g
5.
Quelle est la sortie du code suivant ?
count = 0
for c in "abca":
  if c == "a":
    count += 1
print(count)
  1. 0
  2. 1
  3. 2
6.
Quelle est la sortie du code suivant ?
word = "cab"
for i in word:
  if i == "a":
    print("A", end = "")
  if i == "b":
    print("B", end = "")
  if i == "c":
    print("C", end = "") 
  1. cab
  2. abc
  3. CAB
  4. ABC

count()

La méthode count() compte le nombre d'occurrences d'une sous-chaîne dans une chaîne donnée. Si la sous-chaîne donnée n'existe pas dans la chaîne donnée, la valeur 0 est renvoyée.

Faites le point

Compter le nombre d'occurrences d'une sous-chaîne

Concepts en pratique

Utiliser count() pour compter le nombre de sous-chaînes

7.
Quelle est la sortie de (aaa".count("a")) ?
  1. True
  2. 1
  3. 3
8.
Quelle est la sortie de ("weather".count("b")) ?
  1. 0
  2. -1
  3. False
9.
Quelle est la sortie de ("aaa".count("aa")) ?
  1. 1
  2. 2
  3. 3

find()

La méthode find() renvoie l'indice de la première occurrence d'une sous-chaîne dans une chaîne donnée. Si la sous-chaîne n'existe pas dans la chaîne donnée, la valeur -1 est renvoyée.

Faites le point

Trouver le premier indice d'une sous-chaîne

Concepts en pratique

Utiliser find() pour localiser une sous-chaîne

10.
Quelle est la sortie de "banana".find("a") ?
  1. 1
  2. 3
  3. 5
11.
Quelle est la sortie de "banana".find("c") ?
  1. 0
  2. -1
  3. ValueError
12.
Quelle est la sortie de "b".find("banana") ?
  1. -1
  2. 0
  3. ValueError

index()

La méthode index() fonctionne de manière similaire à la méthode find(), en ce sens qu'elle renvoie l'indice de la première occurrence d'une sous-chaîne dans une chaîne donnée. La méthode index() suppose que la sous-chaîne existe dans la chaîne donnée ; dans le cas contraire, elle lève une ValueError.

Exemple 8.4

Obtenir la partie des minutes de l'heure

Supposons qu'une valeur horaire soit fournie au sein d'une chaîne de caractères au format "hh:mm", où "hh" représente l'heure et "mm" représente les minutes. Pour récupérer uniquement la partie des minutes de la chaîne, on peut utiliser le code suivant :

    time_string = "The time is 12:50"
    index = time_string.index(":")
    print(time_string[index+1:index+3])

La sortie du code ci-dessus est :

    50

Concepts en pratique

Utiliser index() pour localiser une sous-chaîne

13.
Quelle est la sortie de "school".index("o") ?
  1. 3
  2. 4
  3. -3
14.
Quelle est la sortie de "school".index("ooo") ?
  1. 3
  2. 4
  3. ValueError
15.
Quelle est la sortie du code suivant ?
sentence = "This is a sentence"
index = sentence.index(" ")
print(sentence[:index])
  1. "This"
  2. "This "
  3. "sentence"

À vous d'essayer

Trouver tous les espaces

Écrivez un programme qui, à partir d'une chaîne donnée, compte le nombre de caractères d'espacement (espaces) dans la chaîne. Affichez également la chaîne donnée débarrassée de tous ses espaces.

    Input: "This is great"
    Prints:
    2
    Thisisgreat