Comparer des Strings avec Python : comment comparer des Strings ?
La comparaison de Python Strings constitue une tâche de programmation courante qui s’utilise au quotidien. Elle permet notamment d’interpréter les entrées utilisateur, de vérifier d’importants ensembles de données ou encore de travailler avec des protocoles basés sur du texte. Découvrez avec nous plusieurs solutions permettant de comparer des Strings avec Python, chaque fois illustrées par des exemples.
Comparaison de Strings avec Python : opérateurs et fonctions
Python propose à ses utilisateurs plusieurs opérateurs permettant de comparer des Strings, ainsi qu’une gamme de fonctions prédéfinies servant à faciliter et à accélérer la comparaison de ces dernières. Intéressons-nous d’abord aux opérateurs, avant de passer en revue les différentes méthodes de comparaison. Viendront ensuite deux exemples de code, dont nous nous servirons pour illustrer le fonctionnement de ces opérateurs et méthodes.
Opérateurs de comparaison
Pour comparer des Strings avec Python, la solution la plus simple consiste à faire appel à des opérateurs Python. Comme dans le cas de nombres entiers ou flottants, les opérateurs de comparaison peuvent être utilisés pour vérifier les similitudes entre les Strings. Dans un tel contexte, certains opérateurs ne fonctionnent toutefois pas comme pour ces nombres ; en effet, en ce qui concerne les Strings, il est possible de comparer différentes propriétés. Dans le tableau ci-dessous, vous trouverez une rapide présentation des opérateurs de comparaison et de leur fonctionnement respectif.
Opérateur | Signification | Exemple | Valeur renvoyée |
---|---|---|---|
==
|
Strings similaires | "Bonjour" == "bonjour"
|
faux |
!=
|
Strings différentes | "Bonjour" != "bonjour"
|
vrai |
<
|
Ordre lexicographique (inférieur) | "Australie" < "Zimbabwe"
|
vrai |
>
|
Ordre lexicographique (supérieur) | "Australie" > "Zimbabwe"
|
faux |
<=
|
Ordre lexicographique (inférieur ou égal) | "Danemark" <= "Amérique"
|
faux |
>=
|
Ordre lexicographique (supérieur ou égal) | "Danemark" <= "Danemark"
|
vrai |
Ici, l’« ordre lexicographique » est un terme technique synonyme d’« ordre alphabétique » ; ils ont donc la même signification. Les mots avec un ordre lexicographique inférieur apparaissent plus tôt dans l’alphabet que les mots avec un ordre lexicographique supérieur. Par exemple, l’ordre lexicographique de la String « abcd » est donc inférieur à celui de la String « xyz ».
Les espaces vides au sein d’une String correspondent aux caractères avec un ordre lexicographique inférieur. En utilisant les premiers caractères d’une String en tant que Python Substring, l’ordre lexicographique de celle-ci sera toujours inférieur à celui de la String originale. Par exemple, l’ordre lexicographique de la String « Alex » est inférieur à celui de la String « Alexander ».
Attention : l’ordre lexicographique utilisé avec Python ne correspond pas toujours à l’ordre alphabétique dont vous pouvez avoir l’habitude. Python considère notamment que l’expression « a < b » doit renvoyer « vrai », mais que l’expression « a < B » renverra « faux ». En effet, dans les normes ASCII et Unicode, les lettres majuscules sont systématiquement codées avec des valeurs inférieures à celles des lettres minuscules.
En plus de la comparaison de Strings, le formatage de texte constitue une composante importante pour de nombreux programmes. Consultez notre article sur les méthodes String Format en Python pour en savoir plus sur les méthodes et opérateurs de mise en forme les plus importants.
Méthodes de comparaison
Les opérateurs de comparaison ne sont pas les seuls à vous permettre de comparer des Strings ; certaines méthodes intégrées sont également prévues à cet effet, pour une comparaison fondée sur d’autres critères :
Méthode | Description | Exemple | Valeur renvoyée |
---|---|---|---|
.startswith()
|
Renvoie « vrai » si les premières lettres d’une String correspondent à une autre String | "Benjamin".startswith("Ben")
|
vrai |
.endswith()
|
Renvoie « vrai » si les dernières lettres d’une String correspondent à une autre String | "Benjamin".endswith("jasmin")
|
faux |
.find()
|
Renvoie l’index de la première occurrence d’une Substring ; en cas de non-occurrence de la Substring, « -1 » est renvoyé | "Benjamin".find("jamin")
|
4 |
Comparer des Strings avec Python : exemples de code
Pour illustrer le fonctionnement des opérateurs et méthodes décrits ci-dessus, laissez-nous vous présenter deux exemples. L’un est facile, mais l’autre est un peu plus complexe.
Vérifier si une liste est triée par ordre alphabétique
Dans l’exemple ci-dessous, le programme reçoit une saisie de texte et s’en sert pour créer une liste. Ensuite, il utilise des opérateurs de comparaison de manière à vérifier que la liste est bien triée par ordre alphabétique.
liste_de_saisie = []
while(True):
temp = input('Veuillez entrer un mot. Si vous ne souhaitez plus entrer de mots, veuillez entrer \'.\'')
if temp == '.':
break
liste_de_saisie.append(temp)
print('Votre saisie : ', liste_de_saisie)
i = 0
alph = 1
while(i < len(liste_de_saisie) - 1):
if(liste_de_saisie[i] > liste_de_saisie[i + 1]):
print('Cette liste n'est pas triée par ordre alphabétique !')
alph = 0
break
i = i + 1
if(alph == 1):
print('Cette liste est triée par ordre alphabétique.')
PythonBase de données sur les personnes avec fonction de recherche
Cet exemple est plus complexe. L’utilisateur est invité à renseigner les noms et prénoms des personnes concernées. Ils sont ajoutés à une liste ensuite intégrée à une autre liste, plus importante. Une liste imbriquée est alors créée ; chaque sous-liste qui la compose contient le prénom et le nom d’une personne. Ensuite, la grande liste est triée par ordre alphabétique, sur la base des noms de famille. L’utilisateur peut alors saisir à nouveau du texte de manière à rechercher des personnes dans la base de données. Pour ce faire, il lui suffit d’utiliser la méthode de comparaison « .find() ».
personnes = []
while(True):
temp = input('Veuillez saisir le nom de famille de la personne. Si vous ne souhaitez plus saisir de personnes, veuillez saisir \'.\'')
if temp == '.':
break
personne = []
personne.append(temp)
temp = input('Veuillez saisir le prénom de la personne.')
personne.append(temp)
personnes.append(personne)
print('Votre saisie: ', personnes)
# Trier
personnes.sort()
print('Trié : ', personnes)
# Fonction de recherche
while(True):
search = input('Veuillez saisir une chaîne pour effectuer une recherche dans la base de données. Si vous ne souhaitez plus rechercher de personnes, veuillez saisir \'.\'''.)
if search == '.':
break
for i in personnes:
if(i[0].find(search) != -1 or i[1].find(search) != -1):
print('Match trouvé : ', i[0], ', ', i[1])
PythonVous cherchez à mettre rapidement et facilement votre application Web en ligne ? Rien de plus facile : Deploy Now est la solution IONOS qu’il vous faut.