Python >> Tutoriel Python >  >> Python

Un aperçu des méthodes de chaîne Python

Devenez un maître des méthodes de chaîne Python courantes et améliorez vos compétences en manipulation de données !

Les chaînes Python ont de nombreuses fonctionnalités que vous pouvez exploiter dans vos scripts. Cela inclut les opérations de texte courantes telles que la recherche et le remplacement de texte, la suppression des espaces blancs ou le comptage de caractères et de mots. Collectivement, ces fonctions sont appelées Python méthodes de chaîne .

Dans cet article, nous allons passer en revue les principales méthodes de chaîne disponibles pour les scripts Python. Si vous souhaitez approfondir les méthodes de chaîne Python, consultez notre cours Travailler avec des chaînes en Python, qui comprend plus de 50 exercices et 10 heures de matériel d'apprentissage.

Mais attendez – Que sont encore les méthodes de chaîne Python ?

Les méthodes fonctionnent un peu comme les anciennes fonctions ordinaires, mais elles sont associées à un type de données spécifique (par exemple, des entiers, des chaînes ou des listes). Vous pouvez considérer les méthodes comme des fonctions spécialisées qui sont conçus pour fonctionner avec ce type particulier de données.

Une distinction importante entre les méthodes et les fonctions est de savoir comment les exécuter. Pour les fonctions régulières, vous utilisez simplement des parenthèses pour l'exécuter :

result = some_function(argument1, argument2)

Les méthodes, en revanche, doivent être accédées et exécutées à partir d'une variable. Pour ce faire, ajoutez un point entre la variable et le nom de la méthode :

result = some_variable.some_method(argument1, argument2)

Notez la période avant some_method ? Cela indique que nous utilisons une méthode. Le type de données de some_variable détermine les méthodes disponibles.

Voici un exemple concret. Nous allons définir la variable name (une chaîne) puis appelez le lower() méthode :

name = "John"
result = name.lower()

Si vous êtes confus au sujet des variables et des fonctions, la piste Python Basics vous permettra de vous mettre au courant en un rien de temps.

Maintenant que nous savons comment fonctionnent les méthodes, voyons un aperçu des principales méthodes de chaîne Python et de leur utilisation !

Important ! Dans les exemples ci-dessous, nous utilisons la notation str.method_name() pour indiquer qu'il s'agit de méthodes de chaîne. Lors de l'écriture du code, n'oubliez pas de remplacer str par la variable réelle que vous souhaitez utiliser lors de l'appel de la méthode.

Changer la casse du texte avec str.lower() et str.upper()

Commençons par deux exemples simples. Le str.lower() et str.upper() Les méthodes de chaîne sont utilisées pour changer tous les caractères d'une chaîne Python en minuscules ou en majuscules, respectivement. Tout le reste de la chaîne, comme la ponctuation et les espaces, reste le même. Jetez un œil :

name = "Juliano"
name_uppercase = name.upper()
print(name_uppercase)

# output: "JULIANO"

text_all_caps = "THIS TEXT... IS WRITTEN IN ALL CAPS!"
text_lowercase = text_all_caps.lower()
print(text_lowercase)

# output: "this text... is written in all caps!"

Python est assez intelligent pour convertir certains caractères spécifiques au langage (comme "a" , "ë" , ou "a" ) à leurs équivalents majuscules/minuscules :

special_characters = "N Ü Ł"
print(special_characters.lower())  

# output: "n ü ł"

Normaliser la casse du texte avec str.capitalize() et str.title()

Les méthodes de chaîne str.capitalize() et str.title() sont quelque peu similaires à str.lower() et str.upper() en ce qu' ils modifient les caractères en minuscules ou en majuscules. La différence réside dans la façon dont ils le font :

  • str.capitalize() convertit le premier caractère de la chaîne Python en majuscules et les caractères restants en minuscules (c'est-à-dire comme si vous mettiez une phrase en majuscule).
  • str.title() transforme le premier caractère de chaque mot en majuscules et les caractères restants de chaque mot en minuscules.

Voyons ces méthodes en action, en commençant par capitalize() :

fruits = "apple PEAR PeaCh oranGE"

fruits_sentence_case = fruits.capitalize()
print(fruits_sentence_case)

# output: "Apple pear peach orange"

fruits_title_case = fruits.title()
print(fruits_title_case)

# output: "Apple Pear Peach Orange"

Seul le mot "Apple" est en majuscule lorsque nous utilisons str.capitalize() , tandis qu'avec str.title() tous les fruits finissent avec leur première lettre en majuscule. Consultez cet article pour une discussion plus approfondie sur la façon de capitaliser les mots en Python.

Compter les caractères avec str.count()

Le str.count() La méthode est utilisée pour compter les caractères d'une chaîne Python. Vous devez fournir les caractères à compter comme argument. Voici un exemple où nous comptons le nombre de "e" caractères dans une phrase :

sentence = "How many letters e are in this sentence?"
num = sentence.count("e")
print(num)

# output: 7

Vous pouvez compter plusieurs caractères. Ceci est très utile pour compter le nombre d'occurrences d'un mot dans la chaîne :

animals = "dog cat monkey dog rabbit dog"
num = animals.count("dog")
print(num)

# output: 3

Remarque : Parce que Python est sensible à la casse, les lettres majuscules et minuscules sont traitées comme des lettres différentes. Par exemple, notez ce qui se passe lorsque nous comptons pour "x" dans la chaîne suivante :

sentence = "Python won't count these characters: X X X X X"
num = sentence.count("x")  # "x" and "X" are different characters
print(num)

# output: 0

Rechercher des caractères et des mots avec str.find() et str.index()

Comme son nom l'indique, le str.find() la méthode recherche une chaîne de requête (l'argument) dans la chaîne de modèle :

template = "Python is a great programming language!"
position = template.find("great")
print(position)

# output: 12

str.find() renvoie un nombre plutôt qu'une valeur "trouvée" ou "non trouvée". Ce nombre est l'index représentant la position où la chaîne de requête (ici, "grand") commence dans la chaîne de modèle. N'oubliez pas que la première lettre d'une chaîne a l'indice 0. Si vous n'êtes pas familier avec les indices, notre cours sur l'utilisation des chaînes en Python rendra le concept parfaitement clair.

Les indices peuvent être utilisés pour obtenir une sous-chaîne à partir d'une chaîne en Python. Dans l'exemple ci-dessous, nous l'utilisons pour sélectionner le texte directement après la position initiale de la chaîne de requête :

template = "Python is a great programming language!"
position = template.find("great")
print(template[position:])

# output: "great programming language!"

str.find() renvoie -1 comme moyen d'indiquer que la chaîne de requête n'a pas été trouvée :

template = "Python is a great programming language!"
position = template.find("good")  # there’s no "good" in the template
print(position)

# output: -1

Le str.index() la méthode est identique à str.find() , mais il lève une exception au lieu de renvoyer -1 lorsque la requête est introuvable :

template = "Python is a great programming language!"
template.index("good")  
#Output: ValueError: substring not found

Vous pouvez penser qu'un message d'erreur est une mauvaise chose, mais il est parfois utile d'interrompre le programme immédiatement si le résultat n'est pas trouvé. Notre cours Python Basics vous apprendra à gérer correctement les exceptions afin que votre programme ne plante pas dans ces cas.

Modifier les caractères dans la chaîne avec str.replace()

str.replace() est un moyen simple de remplacer des caractères dans une chaîne Python. Passez simplement les caractères à remplacer (c1 ) et les caractères pour les remplacer (c2 ) en arguments :

template = "Python is a great programming language!"
c1 = "a"
c2 = "x"
replaced = template.replace(c1, c2)
print(replaced)

# output: "Python is x grext progrxmming lxnguxge!"

Une utilisation courante de cette méthode de chaîne consiste à supprimer les espaces d'une chaîne :

template = "  look   at    this  space! "
replaced = template.replace(" ", "")  # replace spaces with empty strings
print(replaced)

# output: "lookatthisspace!"

Supprimer les espaces blancs environnants avec str.strip()

Une autre façon de supprimer les espaces consiste à utiliser le str.strip() méthode. Contrairement à l'exemple précédent, il préserve l'espace blanc entre les mots, ne le supprimant qu'au début et à la fin de la chaîne :

template = "     string with    spaces     "
stripped = template.strip() 
print(stripped)

# output: "string with    spaces"

Le str.strip() la méthode a deux variantes, str.lstrip() et str.rstrip() , qui suppriment respectivement les espaces uniquement du côté gauche (début) ou du côté droit (fin) de la chaîne. Vous pouvez voir ce comportement dans les exemples ci-dessous :

template = "     string with    spaces     "
print(template.lstrip())

# output: "string with    spaces     "

print(template.rstrip())

# output: "     string with    spaces"

Diviser une chaîne en une liste avec str.split()

Le str.split() La méthode est utilisée pour diviser une chaîne en une liste de chaînes. Par défaut, cela se fait en divisant la chaîne à chaque espace :

animals = "dog cat monkey dog rabbit dog"
animal_list = animals.split()
print(animal_list)

# output: ['dog', 'cat', 'monkey', 'dog', 'rabbit', 'dog']

Vous pouvez également fournir le caractère à diviser en tant qu'argument. Ceci est utile pour diviser une ligne d'un fichier CSV en une liste de valeurs. Par exemple :

csv_line = "Jane,Doe,12,False,None"
values = csv_line.split(",")  # split at each comma character
print(values)

# output: ["Jane", "Doe", "12", "False", "None"]

Ceci n'est qu'un exemple simple - si vous souhaitez savoir comment traiter correctement les données d'un fichier CSV, consultez Comment lire un fichier CSV dans une liste en Python ou sautez dans notre cours Lire et écrire des fichiers CSV en Python .

Joindre une séquence en une seule chaîne avec str.join()

Le str.join() est utilisée pour ajouter une chaîne entre les éléments de n'importe quelle séquence Python (c'est-à-dire une liste, un tuple ou une autre chaîne). Voici comment cela fonctionne :

template = "ABCDE"
joined = "?".join(template)
print(joined)

# output: "A?B?C?D?E"

Vous voyez ce qui s'est passé ? Nous avons ajouté le "?" caractère entre chaque élément (lettre) de notre chaîne de modèle. Certaines personnes trouvent déroutant que le modèle soit l'argument au lieu d'être la variable utilisée pour appeler la méthode str.join(), alors faites attention à cela.

Comme mentionné, vous pouvez également utiliser cette méthode de chaîne pour joindre des éléments d'une liste :

colors = ["Red", "Green", "Blue", "Yellow"]
joined = "---".join(colors)
print(joined)

# output: "Red---Green---Blue---Yellow"

Vérifiez si une chaîne contient des lettres ou des chiffres avec str.isalpha() , str.isdigit() , et str.isalnum()

Les méthodes de chaîne str.isalpha() et str.isdigit() vous aider à déterminer si une chaîne contient uniquement des lettres ou uniquement des chiffres :

  • str.isalpha() renvoie True si la chaîne ne contient que des lettres (pas de chiffres ni de ponctuation autorisés) et False sinon.
  • str.isdigit() renvoie True si la chaîne ne contient que des chiffres 0-9 dedans et False sinon.

Voici les méthodes en action :

s = "Hello"
print(s.isalpha())

# output: True

s = "Hello World!"  # added punctuation and whitespace
print(s.isalpha())

# output: False

s = "42"
print(s.isdigit())

# output: True

s = "3.14"  # a period is not a digit!
print(s.isdigit())

# output: False

Le str.isalnum() La méthode de chaîne combine simplement les deux méthodes précédentes en une seule. Elle renvoie True si la chaîne ne contient que des lettres de l'alphabet ou des chiffres :

s = "1jwk0a9f3q2jfd3s"
print(s.isalnum())

# output: True

s = "2j7xm5alw8qbh0???"  # note the trailing question marks
print(s.isalnum())

# output: False

Détecter les caractères de début ou de fin avec str.startswith() et str.endswith()

Sans surprise, les méthodes de chaîne Python str.startswith() et str.endswith() sont utilisés pour détecter si une chaîne commence ou se termine par une sous-chaîne donnée. Voici le str.startswith() méthode en action :

text = "I am learning about strings in Python!"
print(text.startswith("I am"))

# output: True

print(text.startswith("You are"))

# output: False

str.endswith() est particulièrement utile pour détecter un type de fichier en lisant l'extension du nom de fichier :

filename = "my_data.xlsx"

if filename.endswith(".xlsx"):
    print("I'm working with an Excel spreadsheet.")
elif filename.endswith(".csv"):
    print("I'm working with a CSV file.")
else:
    print("I'm working with something else entirely.")

Si vous exécutez le code ci-dessus, vous verrez le message "Je travaille avec une feuille de calcul Excel". (Et en passant, nous avons un article sur la façon de lire des fichiers Excel avec Python, ainsi qu'un cours complet sur la lecture et l'écriture de fichiers Excel en Python.)

Combiner les méthodes de chaîne Python

Les méthodes de chaîne Python se rejoignent vraiment lorsque vous commencez à les utiliser pour une tâche spécifique. Par exemple, disons que nous voulons extraire une liste de mots d'un morceau de texte. Nous voulons ignorer les espaces blancs et la ponctuation dans ce processus, et nous voulons également normaliser les mots en convertissant tous les caractères en minuscules. Nous pouvons le faire en appliquant séquentiellement trois méthodes différentes :

  • Utilisez str.lower() pour transformer le texte en minuscules.
  • Utilisez str.replace() pour remplacer les points par des chaînes vides (les supprimant ainsi de la chaîne).
  • Utilisez str.split() pour diviser le texte traité en une liste de mots.

Voici à quoi cela ressemble :

text = """
This is a very interesting text.
IT HAS A SENTENCE IN UPPERCASE.
And. It. Has. Another. Sentence. With. Lots. Of. Periods.
"""
processed_text = text.lower().replace(".", "")
list_of_words = processed_text.split()

print(list_of_words)

# output: ['this', 'is', 'a', 'very', … etc

Nous nous retrouvons avec une seule liste de tous les mots en minuscules dans le texte – plutôt cool ! Notez comment nous pouvons même enchaîner deux méthodes :la sortie de text.lower() devient l'entrée du .replace() appel. En une seule ligne, nous transformons le texte en minuscules et supprimons tous les points.

Maîtriser les méthodes de chaîne en Python !

Nous venons de passer en revue les méthodes de chaîne en Python, mais vous ne faites que commencer ! Passez au cours Travailler avec des chaînes en Python si vous voulez pratiquer tout ce que vous venez de lire !