La fonction join() est extrêmement utile pour manipuler/convertir des données en Python.

Du fait de sa syntaxe assez particulière, combiné aux types de données qu’elle accepte, il est assez aisé de se perdre avec cette fonction.

Pour rappel :

  • Une fonction ne modifie pas directement un objet et « se suffit à elle même ». La syntaxe est fonction()
  • Une fonction est toujours lié à un objet, elle est inutilisable seule. Elle modifie directement son objet. La syntaxe est object.method()

La fonction join() ne modifie donc pas son objet, on devra alors stocker son résultat dans une variable.

La fonction join() accepte en argument ces types de données :

  • string
  • list
  • tuple
  • Dictionary
  • set

Par contre, la fonction join() sort TOUJOURS une STRING, quelque soit le type de données en entrée.

Exemple :

my_List = ["P", "y", "t", "h", "o", "n"]
my_Tuple = ("P", "y", "t", "h", "o", "n")
my_String = "Python"
my_new_list = "_".join(my_List)
my_new_Tuple = "_".join(my_Tuple)
my_new_String = "_".join(my_String)
print(my_List)
print(my_Tuple)
print(my_String)
print("\n")
print(my_new_list)
print(type(my_new_list))
print(my_new_Tuple)
print(type(my_new_Tuple))
print(my_new_String)
print(type(my_String))

>>> ['P', 'y', 't', 'h', 'o', 'n']
>>> ('P', 'y', 't', 'h', 'o', 'n')
>>> Python
>>> 
>>> P_y_t_h_o_n
>>> <class 'str'>
>>> P_y_t_h_o_n
>>> <class 'str'>
>>> P_y_t_h_o_n
>>> <class 'str'>

Comme on peut le voir, sa syntaxe est très particulière et peut faire penser à une méthode. C’est probablement du fait de cette syntaxe que la fonction join() est souvent confondue avec un méthode.

On commence donc par indiquer à la fonction le « séparateur » .Comme la sortie de la fonction est toujours une string, ce séparateur doit être une string que l’on indique entre guillemets.

Ensuite, la fonction va simplement adjoindre le caractère de séparation entre chaque « bloc de donnée » en fonction du type d’entrée.

ATTENTION, elle adjoint bien le séparateur ENTRE les blocs et non pas avant ou après si-bien que les données retour sont dépourvues de ce séparateur au début ou à la fin (malin).

my_List = ["Robert", "Gerard", "Michel", "Ginette", "Jacquie"]
my_new_list = "+".join(my_List)
print(my_new_list)

>>> Robert+Gerard+Michel+Ginette+Jacquie

On se sert très souvent de la fonction join() pour formater des listes tout en gardant un certain ordre dans la string de sortie :

my_List = ["Robert", "Gerard", "Michel", "Ginette", "Jacquie"]
my_new_list = "\n".join(my_List)
print(my_new_list)

>>> Robert
>>> Gerard
>>> Michel
>>> Ginette
>>> Jacquie

0 commentaire

Laisser un commentaire