La classe str propose de nombreuses méthodes utiles pour manipuler et composer des strings.
On y trouve la recherche, le nettoyage, le découpage, la transformation, la traduction et bien d'autres techniques.
Les strings sont des séquences de points de code Unicode : des « caractères » individuels, ou points de code (des strings de longueur 1), auxquels on peut accéder par un numéro d'indice 0-based index depuis la gauche, ou un numéro d'indice -1-based index depuis la droite.
Les strings implémentent toutes les opérations courantes sur les séquences.
On peut les parcourir avec la syntaxe for item in <str> ou for index, item in enumerate(<str>).
On peut aussi les concaténer avec <str> + <other str> ou <str>.join(<iterable>).
Les strings sont immuables, ce qui signifie que la valeur d'un objet str en mémoire ne peut pas changer.
Les fonctions ou méthodes qui opèrent sur une str (comme celles que l'on découvre ici) renvoient une nouvelle instance de cet objet str au lieu de modifier la str d'origine.
Voici une petite sélection de méthodes de strings en Python. Pour une liste complète, consulte la classe str dans la documentation Python.
<str>.title() analyse une string et met en majuscule le premier « caractère » de chaque « mot » trouvé.
En Python, cela dépend beaucoup du codec de langue utilisé et de la manière dont la langue concernée représente les mots et les caractères.
Il peut aussi y avoir des règles de locale appliquées à une langue ou à un jeu de caractères.
man_in_hat_th = 'ผู้ชายใส่หมวก'
man_in_hat_ru = 'мужчина в шляпе'
man_in_hat_ko = '모자를 쓴 남자'
man_in_hat_en = 'the man in the hat.'
>>> man_in_hat_th.title()
'ผู้ชายใส่หมวก'
>>> man_in_hat_ru.title()
'Мужчина В Шляпе'
>>> man_in_hat_ko.title()
'모자를 쓴 남자'
>> man_in_hat_en.title()
'The Man In The Hat.'
<str>.endswith(<suffix>) renvoie True si la string se termine par <suffix>, et False sinon.
>>> 'My heart breaks. 💔'.endswith('💔')
True
>>> 'cheerfulness'.endswith('ness')
True
# Punctuation is part of the string, so needs to be included in any endswith match.
>>> 'Do you want to 💃?'.endswith('💃')
False
>> 'The quick brown fox jumped over the lazy dog.'.endswith('dog')
False
<str>.strip(<chars>) renvoie une copie de la str dont les <chars> en début et en fin ont été supprimés.
Les points de code indiqués dans <chars> ne forment ni un préfixe ni un suffixe : toutes les combinaisons de ces points de code seront supprimées en partant des deux extrémités de la string.
Si rien n'est spécifié pour <chars>, toutes les combinaisons de points de code d'espacement seront supprimées.
# This will remove "https://", because it can be formed from "/stph:".
>>> 'https://unicode.org/emoji/'.strip('/stph:')
'unicode.org/emoji'
# Removal of all whitespace from both ends of the str.
>>> ' 🐪🐪🐪🌟🐪🐪🐪 '.strip()
'🐪🐪🐪🌟🐪🐪🐪'
>>> justification = 'оправдание'
>>> justification.strip('еина')
'оправд'
# Prefix and suffix in one step.
>>> 'unaddressed'.strip('dnue')
'address'
>>> ' unaddressed '.strip('dnue ')
'address'
<str>.replace(<substring>, <replacement substring>) renvoie une copie de la string où toutes les occurrences de <substring> sont remplacées par <replacement substring>.
La citation ci-dessous est tirée de La Chasse au Snark de Lewis Carroll.
# The Hunting of the Snark, by Lewis Carroll
>>> quote = '''
"Just the place for a Snark!" the Bellman cried,
As he landed his crew with care;
Supporting each man on the top of the tide
By a finger entwined in his hair.
"Just the place for a Snark! I have said it twice:
That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
What I tell you three times is true."
'''
>>> quote.replace('Snark', '🐲')
...
'\n"Just the place for a 🐲!" the Bellman cried,\n As he landed his crew with care;\nSupporting each man on the top of the tide\n By a finger entwined in his hair.\n\n"Just the place for a 🐲! I have said it twice:\n That alone should encourage the crew.\nJust the place for a 🐲! I have said it thrice:\n What I tell you three times is true."\n'
>>> 'bookkeeper'.replace('kk', 'k k')
'book keeper'
Dans cet exercice, tu aides ta petite sœur à corriger sa rédaction pour l'école. Le professeur cherche une ponctuation correcte, une grammaire correcte et un excellent choix de mots.
Tu as quatre tâches pour nettoyer et modifier des strings.
Toute bonne rédaction a besoin d'un titre bien mis en forme.
Implémente la fonction capitalize_title(<title>), qui prend un titre str en paramètre et met une majuscule à la première lettre de chaque mot.
Cette fonction doit renvoyer une str dont chaque mot commence par une majuscule.
>>> capitalize_title("my hobbies")
"My Hobbies"
Tu veux t'assurer que la ponctuation de la rédaction est parfaite.
Implémente la fonction check_sentence_ending(), qui prend sentence en paramètre. Cette fonction doit renvoyer un bool.
>>> check_sentence_ending("I like to hike, bake, and read.")
True
Pour que la rédaction ait l'air professionnelle, il faut supprimer les espaces superflus.
Implémente la fonction clean_up_spacing(), qui prend sentence en paramètre.
La fonction doit supprimer les espaces superflus au début et à la fin de la phrase, et renvoyer une nouvelle str contenant la phrase mise à jour.
>>> clean_up_spacing(" I like to go on hikes with my dog. ")
"I like to go on hikes with my dog."
Pour rendre la rédaction encore meilleure, tu peux remplacer certains adjectifs par leurs synonymes.
Écris la fonction replace_word_choice(), qui prend sentence, old_word et new_word en paramètres.
Cette fonction doit remplacer toutes les occurrences de old_word par new_word, et renvoyer une nouvelle str contenant la phrase mise à jour.
>>> replace_word_choice("I bake good cakes.", "good", "amazing")
"I bake amazing cakes."
Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.