Python : Transformer une liste en chaine de caractère String et inversement

Table des matières

Introduction

Petit Rappel indispensable sur les Listes

Définition d’une liste et quelques exemples concrets

Les opérations de base sur une liste

Evidemment, un petit rappel sur les chaines de caractères s’impose

Définir une chaine de caractère

Les opérations de base sur une chaine de caractère

Conversion d’une chaine de caractères en liste & exemples pratiques

Utilisation de la méthode split ( )

Utilisation de la méthode strip()

Fonction map()

Conversion d’une liste en chaine de caractères : méthodes & exemples

Fonction join ()

Built-in fonction qui traverse une liste

Utilisation de la fonction map ( )

Introduction :

Python est un langage très riche en information notamment en type de données. En effet, Il offre un large choix de type de données, par exemple le type string pour stocker les chaines de caractères, liste pour stocker un ensemble de données de n’importe quel type, set pour une liste ou les doublons n’existent pas et finalement le type dictionnaire pour lier des clés à des valeurs et faciliter leur accès par la suite. Il faut noter qu’il existe bien encore d’autres  types de données en Python, mais nous avons cité les plus répandus !

Dans ce tutoriel, nous allons voir les notions de String et de List et comment passer d’un type à un autre. Il vous arrivera des fois de vouloir stocker votre chaine de caractère afin de faire un traitement spécial sur cette dernière ou bien le contraire qui est de transformer une liste de mots ou lettres en String !

Petit Rappel indispensable sur les Listes :

Définition d’une liste et quelques exemples concrets :

Une liste est une structure de donnée polyvalente utilisée pour stocker des éléments de n’importe quel type. Ce type de donnée est similaire à un tableau en programmation. Les items de cette liste sont stockés entre crochets et séparés par des virgules.

Voici des exemples de listes :

  • Liste d’entiers:    Liste_int = [ 1, 20, 76,90,71,8]
  • Listes de caractères: List_char= [ ‘A’,’B’,’E’]
  • Liste de chaine de caractères: List_char_n = [‘Hello’,’My’,’Name’,’Is’,’Python’]
  • Liste hétérogè,e: List_het=[‘A’,1,2,’E’]
  • Liste imbriquée :

Liste_1= [‘I’,’Love’]

Liste_2= [‘Reading’,’Python’]

Liste_3= [‘Articles’]

Liste_de_listes= [Liste_1, Liste_2, Liste_3]     

Les opérations de base sur une liste :

Il existe un nombre incontournables d’opérations de et de traitements que nous pouvons appliquer sur une liste, voici les plus basiques et essentielles pour ce tutoriel :

  • ·Accéder aux éléments d’une liste :

list_1 = ['H','E','L','L','O']# premier element
print ( list_1[0] )  # H
# troisième élément
print (list_1[2])  # o
# cinquième élément
print (list_1[4])  # e
# liste imbriquée
list_n = ["Hello", [2, 0, 1, 5]]
# indexation imbriqué
print (list_n [0][1])
print (list_n [1][3])
# Erreur ! seul un entier peut être utilisé pour l'indexation
print (list_1 [4.0])

Exécution :

  • Indexation négative :

Python permet une indexation négative pour ses séquences. L'indice -1 fait référence au dernier élément, -2 à l'avant-dernier élément et ainsi de suite. Code python :

# indexation négative dans une listeliste = ['h','e','l','l','o'] # dernier élément de la listeprint (liste [-1]) # premier élément de la listeprint (liste [-5])

 Exécution : 

  • Découper une liste :

Il est possible d’accéder aux éléments d’une liste en utilisant un opérateur de découpage, cette section sera très utile par la suite pour comprendre comment on pourra passer d’une chaine de caractère à une liste. Soyez patients on y arrivera pas à pas !

Code python :

# Découpage de liste en Python
liste = [ 'p','r','o','g','r','a','m','m','a','t','i','o',’n’ ]
# retourne les éléments de l'index 2 à 4
print (liste [2:5])
# retourne les éléments de l'index 5 à la fin
print (liste [5 :])
# retourne les éléments du début à la fin de la liste
print (liste [:])
# boucle qui affiche tous les éléments de la liste
for i in liste [:]
print(i)

Exécution:

  • Ajouter/changer les éléments d’une liste :

Les listes peuvent être modifiées, cela signifie que leurs éléments peuvent être modifiés contrairement à une chaine de caractère. L’opérateur « = » permet de faire cette mutation.

Code python :

# Corriger une valeur erronée dans une liste
err = [2, 4, 6, 8]
# change le premier élément
err [0] = 1
print (err)
# change les éléments de la deuxième à la dernière position
err [1:4] = [3, 5, 7]
print (err)

Exécution :

  • Suppression des éléments d’une liste :

Nous pouvons supprimer un ou plusieurs éléments d'une liste à l'aide de l'instruction Python del. Sachez qu’on peut même supprimer la liste en entier. Code python : 

# Suppression des éléments d'une liste
liste= ['s', 'u', 'p', 'p', 'r', 'i', 'm','e','r']
# supprimer un seul élément
del my_list [2] print (my_list)
# supprimer une rangée d'éléments
del my_list[1:5] print(my_list)
# supprimer la liste entière
del my_list
# Erreur : liste non définie
print (my_list)

Exécution :

Maintenant vous avez toutes les notions nécessaires sur les listes pour comprendre les traitements qu’on verra par la suite dans les sections propres à la conversion de types ! Nous allons à présent faire un petit rappel des chaines de caractères aussi.

Evidemment, un petit rappel sur les chaines de caractères s’impose :

Définir une chaine de caractère 

Les chaines de caractères constituent une structure de données assez importante en programmation. En effet, ce type de donnée permet de stocker des caractères alphanumériques comme des lettres, chiffres ou caractères spéciaux.

En python, une chaine de caractère est définie de la manière suivante :

Code :

# définir des caractères en Python
# Toutes ces déclarations sont équivalentes
caractere = ' Bonjour '
print (caractere)
caractere = " Bonjour "
print (caractere)
caractere = ''' Bonjour '''
print (caractere)
# La chaîne de guillemets triples peut s'étendre sur plusieurs lignes
caractere= """ Bonjour, bienvenue
dans le monde magnifique de Python """
print (caractere)

Résultat d’exécution :

Les opérations de base sur une chaine de caractère :

Voici quelques opérations de base sur une chaine de caractère qui seront utiles pour la suite du tutoriel :

  • Accèder aux caractères d’une chaine de caractères

Code :

# Accèder aux caractères dans une chaine de caractères
str = 'programmation'
print ('str = ', str)
# premier caractère
print (‘str [0] = ', str [0])
# dernier caractère
print (‘str [-1] = ', str [-1])
# extraction du deuxième au 5ème caractère
print (‘str [1:5] = ', str [1:5])
# extraction du sixième au 2ème dernier caractère
print (‘str [5 :-2] = ', str [5 :-2])

Exécution :

  Conversion d’une chaine de caractères en liste & exemples pratiques :

Il existe plusieurs méthodes pour transformer une liste en chaine de caractère, dans cette section du tutoriel nous allons découvrir les méthodes les plus utilisées :

Utilisation de la méthode split ( ) :

La méthode split ( ) permet de découper un string en se basant sur un délimiteur. Une fois exécutée, elle retourne la chaine de caractère séparée dans une liste.

Voici la syntaxe globale de la méthode :

string.split( delimiter, maxsplit)

Paramètres :

- delimiter : optionnel, Spécifie le délimiteur souhaité à utiliser lors du fractionnement de la chaîne. Si aucune valeur n’est renseignée, les espaces blancs sont considérés comme des délimiteurs.- maxsplit : optionnel, Optionnel. Spécifie le nombre de divisions à effectuer.

A présent, nous allons présenter quelques exemples d’utilisation de la méthode :

Exemple :

Code :

# Déclaration du String
str_1 = "Lisez cet article jusqu'à la fin"
list_1 = str_1.split()
print(list_1)
#Output :
# ['Lisez', 'cet', 'article', 'jusqu'à, 'la', 'fin']

Exécution :

Ici nous n’avons pas renseigné les paramètres delimiter et maxsplit donc le delimiter par défaut est l’espace blanc.

A présent nous allons passer à un deuxième exemple on nous allons définir le délimiteur.

Exemple  :

Code :

str_1 = "Lisez-cet-article-jusqu'à-la-fin"
list_1 = str_1.split('-')
print (list_1)
#Output :
# ['Lisez', 'cet', 'article', 'jusqu'à, 'la', 'fin']

Exécution :

Exemple :

Code :

str_1 = "Ici;nous;utilisons;la;virgule;autant;que;delimiteur"
list_1 = str_1.split(';')
print(list_1)
#Output:
#['Ici', 'Nous', 'utilisons','la','virgule','autant','que','délimiteur']

Exécution :

Exemple 4 :

Code :

def conversion(Nom_pays):
return (Nom_pays[0].split())
Pays = ["Autriche Portugal"]
print(convert(Pays))

Exécution :

Après ces multiples exemples, nous pensons que maintenant la méthode split() est plus clair ! Nous allons à présent passer à une deuxième méthode.

Utilisation de la méthode strip ():

 Cette méthode convertit une chaîne de caractères en une liste de caractères. C'est pourquoi cette méthode n'est pas utilisée très souvent. Je vous recommande de l’utiliser uniquement si vous êtes certain que la liste doit contenir chaque caractère en tant qu'élément et si la chaîne contient un ensemble de caractères ou de chiffres qui ne sont pas divisés par un espace. Dans le cas contraire, les espaces seraient également considérés comme un caractère et stockés dans une liste.

Nous allons voir quelques exemples pour illustrer la problématique citée :

Exemple :

Code :

str_1 = "Python est le meilleur langage de programmation"
list_1 = list(str_1.strip(" "))
print(list_1)
#Output ['P', 'y', 't', 'h','o','n', ' ', 'e', 's', 't', ' ', 'l', 'e', ' ', 'm', 'e', 'i ', 'l', 'l', 'e', 'u', 'r', ' ', 'l', 'a', 'n', 'g''a','g','e',' ','d','e',' ','p','r','o','g','r','a','m','m','a','t','i','o','n']

Exécution :

Comme vous pouvez le constater lors de l’exécution, même les espaces blancs sont stockés autant que chaine de caractère.

Exemple :

Code :

str_1 = "Pythonestlemeilleurlangagedeprogrammation"
list_1 = list (str_1.strip (" "))
print (list_1)
#Output['P', 'y', 't', 'h','o','n','e', 's', 't', 'l', 'e','m', 'e', 'i ', 'l', 'l', 'e', 'u', 'r','l', 'a', 'n', 'g''a','g','e','d','e','p','r','o','g','r','a','m','m','a','t','i','o','n']

Exécution :

Contrairement au premier exemple, ce code retourne uniquement une liste qui ne contient que les caractères de la chaine sans espaces blancs.

On en conclut que cette méthode ne doit être utilisée que dans le cas où on a une chaine sans espaces blancs.

  • ·Utilisation de la méthode list ():

La méthode list () est la plus simple à utiliser. Voici un exemple simple :

Exemple :

Code :

st='Python'
list (st)

Exécution :

Fonction map() :

Nous allons voir dans cette partie comment on peut convertir une chaine de caractères qui contient des chiffres en une liste de chiffres grâce à la fonction map ().

Code :

chaine = "15 27 89"
liste = chaine.split()
nv_ele = map (int, liste)
e = list(nv_ele)
print(e)

Exécution :

Conversion d’une liste en chaine de caractères : méthodes & exemples :

A présent, nous allons voir dans le sens inverse comment nous pouvons convertir une liste en chaine de caractère en utilisant différentes méthodes.

Fonction join () :

La fonction join() est l’une des méthodes les plus simples qui permet de convertir une liste en une chaine de caractères en Python.  Le seul point qu’il faut avoir à l’esprit est que cette fonction ne peut convertir qu’une liste qui contient que des chaines. Nous allons illustrer cela par des exemples :

Exemple :

Code :

liste= ['Bienvenue','dans','le','monde','de','Python']
print (' '.join (liste))
print (' -- '.join (liste))

Exécution :

Vous remarquez évidemment que les deux lignes de code retournent des résultats différents. En effet, le paramètre de jointure est défini entres les deux guillemets. Dans la première ligne, la chaine de caractères a été créé suite à la jointure des éléments de la liste et du caractère espace blanc alors que dans le deuxième exemple nous avons choisi le caractère ‘—‘.

Exemple :

Code :

liste= [1,2,3,4,5]
print (' '.join (liste))

Exécution :

Vous vous demandez surement pourquoi nous avons l’erreur ci-dessus lors de l’exécution du code. En effet, la réponse est simple ! Nous avons mentionné auparavant que la fonction join () ne peut être utilisée que si la liste contenait uniquement des chaines de caractères. Mince alors ! Ne vous inquiétez pas nous avons la solution :

Code :

liste= [1,2,3,4,5]
print(' '.join(str(e) for e in liste))

Exécution :

Et voilà, il suffit de transformer les chiffres en caractères et le tour est joué.

Built-in fonction qui traverse une liste :

Dans cet exemple, nous déclarons d'abord une liste qui doit être convertie en chaîne. Ensuite, une chaîne vide doit être initialisée pour stocker les éléments. Après cela, chaque élément de la liste est parcouru à l'aide d'une boucle for, et pour chaque index, l'élément serait ajouté à la chaîne initialisée. À la fin, la chaîne sera imprimée à l'aide de la fonction print().

Code :

list= ["convertir","liste","en","string"]
chaine=' '
for e in list:
chaine += ' ' + e
print (chaine)

Exécution :

Utilisation de la fonction map ( ) :

Cette fonction peut être utilisée dans deux cas pour convertir une liste en chaine de caractères :

  1. Si la liste contient seulement des nombres
  2. Si la liste est hétérogène.

 La fonction map ( ) acceptera deux arguments.

1.      fonction str ( ) ; qui convertira le type de données donné en type de données chaîne.2.      Une séquence itérable ; chaque élément de la séquence sera appelé par la fonction str ( ). Les valeurs de chaîne seront renvoyées via un itérateur.A la fin, la fonction join ( ) est utilisée pour combiner toutes les valeurs renvoyées par la fonction str ( ).                                 

Exemple :                 

Code :                  

List = ["convertir","liste","en","string", 1,2,3]ma_chaine= ' '.join (map (str, list))print (ma_chaine)

Exécution : 

  • List comprehension :

Cette méthode génère une liste d’éléments à partir d’une liste existante. Par la suite, à l’aide d’une boucle, elle traverse les éléments itérables un par un. En effet, pour convertir une liste en chaine de caractères. La list comprenhension va parcourir les éléments et la méthode join () va concaténer l’ensemble des éléments dans une chaine de caractère.

Exemple:

Code:

liste= ["convertir","liste","en","string","en","python"]strg=' '.join([str(i) for i in liste])
print(strg)

Exécution:

A présent, vous disposez de toutes les méthodes essentielles pour convertir une chaine de caractère en liste ou inversement. Il suffit de bien identifier le besoin et de choisir la méthode qui sera le plus adaptée pour vous. Pour des problématiques plus complexes, il faudra juste adapter son code mais le principe reste le même ! Soyez surs et certains.

Article publié le 20 Mars 2022par Mouna HAMIM