2.2 Python - Strings
Rappel
Avant de commencer cette nouvelle quête, rappelons que les consignes des challenges sont désormais en anglais. En effet, pendant la formation, tu vas vite te rendre compte que tout ce qui tourne autour de la data est en anglais (documentation, vocabulaire technique...). Alors oui, il est important, lorsqu'on apprend des notions complexes (comme c'est le cas avec Python), de le faire avec sa langue natale pour bien comprendre. C'est exactement pour cette raison que jusqu'à maintenant, les consignes pour les challenge des quêtes Python étaient en français. Désormais, tu vas apprendre à pratiquer de plus en plus avec la langue anglaise pour être à l'aise lorsque tu seras en entreprise. Bon courage !!! Si tu as encore trop de mal, tu peux traduire les consignes en français pour t'aider, mais nous t'incitons à faire l'effort de poursuivre en anglais.
Introduction
Les chaînes sont un des types les plus utilisés en Python. Le nom de chaîne fait référence à « chaîne de caractères », une séquence de caractères, donc. Un caractère peut être une lettre, un chiffre, une espace, un signe de ponctuation, mais aussi un emoji, un symbole, un truc invisible... Dans cette quête, tu vas t'entraîner à manipuler des chaînes !
Une chaîne peut s'écrire entre deux apostrophes, ou entre deux guillemets droits, comme ceci :
str_1 = "Salut wilder !"
str_2 = 'Salut wilder !'
Objectifs
✅ Comprendre ce qu'est une chaîne de caractères ✅ Manipuler des chaînes de caractères ✅ Utiliser des méthodes dessus
Sommaire
Les chaînes de caractères, qu'est-ce ?
Une chaîne de caractères est contenue dans une variable de type str.
Comme beaucoup de choses en Python, une chaîne est un objet. On reviendra sur ce concept plus tard, ce qu'il faut savoir là maintenant est qu'à chaque chaîne est associée des fonctions dédiées, qu'on appelle des méthodes.
Sélectionner les caractères
Les chaînes sont indexées, ce qui signifie que chaque caractère dedans a une position, qui démarre à 0. On peut aussi utiliser des positions négatives, en partant de la fin de la chaîne, qui correspond à -1.
s = 'Fudge'
s[0] # 'F'
s[3] # 'g'
s[-1] # 'e'
On peut aussi utiliser des intervalles (slices) pour récupérer les caractères entre deux positions (en excluant la borne supérieure). On les appelle des sous-chaînes (substrings), comme ceci :
F u d g e
0 1 2 3 4
-5 -4 -3 -2 -1
s = 'Fudge'
s[0:2] # 'Fu'
s[2:5] # 'dge'
s[:4] # 'Fudg'
s[3:] # 'ge'
s[:] # 'Fudge'
Les chaînes sont immuables
Un objet immuable ne peut pas être modifié. Une fois créée, la chaîne de caractères reste fixe, ce qui fait qu'on ne peut pas assigner un caractère à une position :
# On essaie de remplacer le b par m
>>> word = "bonjour"
>>> word[0] = "m"
TypeError: 'str' object does not support item assignment
Cependant, il est toujours possible de créer des copies modifiées de la chaîne originale, par exemple avec des fonctions. La méthode .replace() permet de créer une copie d'une chaîne où une sous-chaîne est remplacée par une autre :
>>> print(word.replace('b','m'))
"monjour"
Cette méthode ne modifie pas la chaîne word, elle en crée une nouvelle ! On peut le voir ici :
>>> word = "bonjour"
# Chaque objet Python a un identifiant unique
>>> print(id(word))
140194894989872
# En utilisant .replace(), on crée un nouvel objet, son id est différent
print(id(word.replace('b','m')))
950194798731504
Comme tu t'en doutes peut-être, s'il existe des objets immuables, il en existent d'autres muables... qui viendront très bientôt.
Quelques détails supplémentaires
Une chaîne peut être vide !
s = "" # La chaîne vide
Les chaînes peuvent être concaténées avec l'opérateur + :
a = 'aze'
b = 'rty'
c = ''
print(a + b) # 'azerty'
print(a + c) # 'aze'
Ressources supplémentaires
Challenge
Dans ce challenge tu vas t'entraîner à la manipulation de chaînes.
Crée une copie du notebook ci-après et réalise les missions qui s'y trouve : 2.2 Python - Strings
Une fois réalisé, poste le lien vers ton notebook en commentaire pour validation, sans oublier de le rendre accessible en lecture pour toute personne disposant du lien.
Critères de validation
- Le notebook est accessible en lecture pour toutes personnes disposant du lien
- Les exercices ont été correctement résolus
Proposition de solution
Dans ce notebook, tu trouveras une solution au challenge. Ce n'est pas la seule possible, mais elle fonctionne !
Ressources partagées sur cette quête
- Référencehttps://www.w3schools.com/python/python_strings.asp
- Un petit récap en françaishttp://www.python-simple.com/python-langage/chaines-de-caracteres-string.php
- Helps with first missionhttps://blog.finxter.com/python-count-characters-except-empty-spaces/
- Mission 4 supprimé des espaces https://apcpedagogie.com/comment-supprimer-les-espaces-dans-une-chaine-en-python/
- pour mission 6https://www.geeksforgeeks.org/isupper-islower-lower-upper-python-applications/
- Mission 6https://docs.postgresql.fr/9.6/datatype-character.html#:~:text=SQL%20d%C3%A9finit%20deux%20types%20de,ne%20sont%20pas%20des%20octets).