Python >> Tutoriel Python >  >> Python

Comment convertir une chaîne en liste en Python ?

Aperçu

En tant que programmeur, vous pouvez rencontrer des scénarios dans lesquels vous devez convertir une chaîne en liste. Maintenant, vos exigences peuvent varier en fonction de l'objectif de votre programme. Par exemple :

Exemple 1 : Étant donné une chaîne contenant des mots ; comment extraire chaque mot de la chaîne et les stocker en tant qu'éléments individuels dans une liste.? En d'autres termes, convertir une chaîne donnée en une liste de chaînes.

text = "Learning Python Is Awesome!"

Sortie :

List: ['Learning', 'Python', 'Is', 'Awesome!']

Exemple 2 : Étant donné une chaîne séparée par des virgules ; comment stocker les éléments d'une liste ?

Chaîne donnée :

text = "Rock,Brock,John"

Sortie :

List: ['Rock', 'Brock', 'John']

Exemple 3 : Étant donné une chaîne ; comment extraire chaque caractère de la chaîne? En d'autres termes, convertir une chaîne en une liste de caractères.

Chaîne donnée :

text = "AEIOU"

Sortie :

['A', 'E', 'I', 'O', 'U']

Exemple 4 : Étant donné une chaîne entière ; comment le convertir en une liste d'entiers ?

Chaîne donnée :

ip = "192.168.10.1"

Sortie :

List of integers :  [192, 168, 10, 1]

Exemple 5 : Étant donné une chaîne ; comment le convertir en une liste de listes ?

Chaîne donnée :

text = ['Apple','Mango', 'Banana', 'Orange','Cherry']

Sortie :

[['Apple'], ['Mango'], ['Banana'], ['Orange'], ['Cherry']]

Dans cet article, nous allons voir comment résoudre les scénarios mentionnés ci-dessus et convertir une chaîne en liste en Python. Alors, sans plus tarder, plongeons-nous dans les solutions une par une.

❖ Conversion d'une chaîne en une liste de chaînes à l'aide de la méthode split()

split() est une méthode intégrée à Python qui est utilisée pour diviser une chaîne en une liste.

Syntaxe

string.split(separator, maxsplit)
Paramètre Facultatif/Obligatoire Valeur par défaut Description
séparateur Facultatif Espace Représente le séparateur à utiliser lors du fractionnement de la chaîne.
maxsplit Facultatif -1 Utilisé pour spécifier le nombre de divisions à effectuer.

Exemple :

text = "Learning Python Is Awesome!"
li_text = text.split(' ')
print("List:",li_text)

Sortie :

List: ['Learning', 'Python', 'Is', 'Awesome!']

❖ Conversion d'une chaîne avec des éléments délimités par des virgules en une liste

◆ Utilisation de split()

Pour séparer une chaîne contenant des éléments séparés par des virgules, comme indiqué dans l'exemple ci-dessous, nous pouvons à nouveau utiliser le split() fonction en passant une virgule dans l'argument séparateur.

Exemple :

text = "Rock,Brock,John"
li_text = text.split(',')
print("List:",li_text)

Sortie :

List: ['Rock', 'Brock', 'John']

◆ Utiliser une fonction personnalisée

Nous pouvons également définir une fonction personnalisée pour diviser notre chaîne et ajouter les éléments un par un à une liste. Voyons comment nous pouvons faire cela en utilisant notre fonction dans le programme ci-dessous.

text = "Rock,Brock,Jhon"

def convert(a):
  count = 0
  li = []
  li_text = ""
  for i in a:
    count = count+1
    if i != ',':
      li_text = li_text+i
      if count == len(text):
        li.append(li_text)
    else:
      li.append(li_text)
      li_text = ""
  print("List:",li)

convert(text)

Sortie :

List: ['Rock', 'Brock', 'Jhon']

❖ Conversion d'une chaîne en une liste de caractères à l'aide de la méthode list()

Pour convertir une chaîne donnée en une liste de caractères, nous pouvons simplement convertir ou transtyper la chaîne donnée en une liste à l'aide de la méthode list ().

➥ Le list() est utilisé pour retourner une liste en Python. Par conséquent, il peut être utilisé pour transtyper une séquence donnée comme une chaîne en type liste.

Voyons comment nous pouvons transtyper la chaîne en une liste de caractères dans le programme ci-dessous.

text = "AEIOU"
print(list(text))

Sortie :

['A', 'E', 'I', 'O', 'U']

❖ Convertir une chaîne d'entiers en une liste d'entiers

Pour convertir une chaîne contenant des entiers en chaînes, nous devons utiliser une combinaison du split() méthode, list() méthode et le map() méthodes en Python. Nous avons déjà discuté de l'utilisation du list() et split() méthodes dans les exemples ci-dessus ; comprendre l'utilisation du map() méthode.

La méthode map()

Avec la fonction map() de Python, vous pouvez appliquer une fonction spécifique à chaque élément d'un itérable.

Il prend deux arguments :

  • Fonction :il s'agit souvent d'une fonction lambda que vous pouvez définir à la volée. C'est la fonction que vous allez appliquer à chaque élément d'un itérable.
  • Iterable :il s'agit de l'itérable que vous convertissez en un nouvel itérable où chaque élément est le résultat de la fonction map() appliquée.

Le résultat est un objet map() .

Pour plus de détails sur la méthode map(), veuillez suivre le didacticiel de notre blog sur ce lien.

Maintenant que nous savons utiliser le list() et le map() méthodes, appliquons-les et convertissons la chaîne donnée en une liste.

ip = "192.168.10.1"
li=list(ip.split('.'))
li_int=list(map(int,li))
print("List of integers: ",li_int)

Sortie :

List of integers :  [192, 168, 10, 1]

Dans le programme ci-dessus :

  1. Nous divisons la chaîne en utilisant le split() méthode avec . comme séparateur.
  2. Nous transtypons ensuite notre chaîne et la stockons dans une liste en utilisant le list() fonction. La liste à ce stade ressemble à ceci :[‘192’, ‘168’, ’10’, ‘1’]
  3. Par conséquent, nous utilisons le map() fonction pour mapper le int() fonctionne à travers chaque élément de la liste et convertit chaque élément en un entier. Enfin, nous affichons les valeurs entières transtypées en sortie. Comme ces valeurs sont des nombres entiers, nous pouvons également effectuer des opérations arithmétiques sur celles-ci.

❖ Conversion d'une liste de chaînes en une liste de listes

Si la liste donnée contient des chaînes qui n'ont pas de complications alors le split() est la seule arme dont nous avons besoin pour la convertir en une liste de listes contenant des chaînes. Voyons cela rapidement dans l'exemple ci-dessous.

text = ['Apple','Mango', 'Banana', 'Orange','Cherry']
print("ORIGINAL LIST: ")
print(text)
print("LIST OF LISTS: ")
li = [i.split(",") for i in text]
print(li)

Sortie :

ORIGINAL LIST: 
['Apple', 'Mango', 'Banana', 'Orange', 'Cherry']
LIST OF LISTS: 
[['Apple'], ['Mango'], ['Banana'], ['Orange'], ['Cherry']]

Cependant, que se passe-t-il si la chaîne donnée est quelque chose comme celle donnée ci-dessous ! Cela ne nous mènera pas à la bonne sortie car dans ce cas, nous devons non seulement séparer les chaînes, mais également éliminer les crochets supplémentaires.

Chaîne donnée :

text = ["[10,20]", "[30,40]"]

Résultat attendu :

[['10', '20'], ['30', '40']]

Pour résoudre le problème ci-dessus, nous pouvons utiliser deux approches. Discutons-en.

◆ Méthode 1 :Utilisation des méthodes strip() et split()

string.strip() : Méthode intégrée dans Python qui supprime les espaces blancs de début et de fin, y compris les caractères de nouvelle ligne « \n » et les caractères tabulaires « \t ».

Argument facultatif : string.strip(characters) . Cela supprimera des caractères spécifiques à gauche et à droite de la chaîne.

Pour plus de détails, veuillez consulter notre tutoriel de blog ici.

Nous allons utiliser le strip() méthode pour éliminer les parenthèses tandis que le split() La méthode est utilisée pour séparer les données de la liste des listes par des virgules. Voyons cela dans le programme ci-dessous :

text = ["[10,20]", "[30,40]"]
print("ORIGINAL LIST: ")
print(text)
print("LIST OF LISTS: ")
li = [i.strip("[]").split(",") for i in text]
print(str(li))

Sortie :

ORIGINAL LIST: 
['[10,20]', '[30,40]']
LIST OF LISTS: 
[['10', '20'], ['30', '40']]

◆ Méthode 2 :Utilisation du découpage de liste

Au lieu de supprimer les crochets, nous pouvons découper la liste donnée du deuxième élément à l'avant-dernier élément, ce qui nous permet d'éliminer les crochets. La tâche et la logique derrière le programme sont les mêmes, nous avons juste changé notre approche d'élimination des parenthèses. Voyons donc comment nous pouvons le faire.

text = ["[10,20]", "[30,40]"]
print("ORIGINAL LIST: ")
print(text)
print("LIST OF LISTS: ")
li = [i[1:-1].split(",") for i in text]
print(str(li))

Sortie :

ORIGINAL LIST: 
['[10,20]', '[30,40]']
LIST OF LISTS: 
[['10', '20'], ['30', '40']]

Remarque : En fonction de la chaîne donnée, vous devrez peut-être ajuster la tranche. Pour en savoir plus sur le découpage en tranches, veuillez suivre notre tutoriel de blog ici.

Conclusion

Dans cet article, nous avons appris comment convertir une chaîne en liste en Python en utilisant de nombreuses méthodes et scénarios. Après avoir lu cet article, j'espère que vous pourrez facilement convertir des chaînes en listes en Python. Vous voudrez peut-être jeter un œil à cet article :Comment diviser une chaîne et conserver les séparateurs ? si vous souhaitez approfondir vos compétences avec le split() méthode.

Veuillez vous abonner et rester à l'écoute pour plus d'articles !