Accéder au contenu principal
Python

Importer et écrire des fichiers texte en Python

Cet article présente différentes façons d’importer des fichiers texte en Python avec Python, NumPy et les méthodes natives de Python. Il explique aussi comment les convertir en listes.
Adam Shafi's photo
Adam Shafi
Actualisé · 6 min lire

Explorez l'IA

ChatGPTClaudePerplexity

Créez votre compte gratuit

S'entraîner et cursus vos progrès.

Continuer Avec Google
En continuant, vous acceptez nos Conditions d'utilisation, notre Politique de confidentialité et le fait que vos données seront hébergées aux États-Unis.

Exécutez et modifiez le code de ce tutoriel en ligne

Exécuter le code

Ce tutoriel explique comment lire des fichiers texte en Python. C’est une étape essentielle de tout projet impliquant des données textuelles, en particulier en traitement automatique du langage naturel (« NLP »). L’import de fichiers texte en Python comporte quelques subtilités et pièges courants : pour gérer efficacement du texte, les data scientists doivent souvent s’éloigner de packages familiers comme pandas.

Pour tirer le meilleur parti de cet article, vous devriez avoir des bases en Python, notamment connaître les types de données (différences entre chaînes de caractères, entiers et listes). Des notions de pandas et de ce qu’est un dataframe seront également utiles. 

Si vous souhaitez importer des données depuis des fichiers .csv, consultez le tutoriel pandas read csv() : importer des données. Pour en savoir plus sur l’import depuis des fichiers JSON et pickle (.pkl), rendez-vous sur le tutoriel Importer des données dans pandas. Si le scraping de pages HTML vous intéresse, Web scraping avec Python (et Beautiful Soup) est fait pour vous. Autrement, vous pouvez démarrer directement sur DataCamp avec notre cours interactif Introduction to Importing Data in Python, dont le premier chapitre est gratuit.

Le fichier texte

Pour ce tutoriel, nous utilisons un simple fichier texte, qui est un copier-coller du premier paragraphe de la page Wikipédia sur le traitement automatique du langage naturel. Il a été enregistré sous le nom nlp_wiki.txt. Il contient ce qui suit :

"Natural language processing (NLP) is an interdisciplinary subfield of linguistics, computer science, and artificial intelligence concerned with the interactions between computers and human language, in particular how to program computers to process and analyze large amounts of natural language data. The goal is a computer capable of "understanding" the contents of documents, including the contextual nuances of the language within them. The technology can then accurately extract information and insights contained in the documents as well as categorize and organize the documents themselves. Challenges in natural language processing frequently involve speech recognition, natural-language understanding, and natural-language generation."

Importer des données texte en Python

Importer des données avec la fonction read_table() de pandas

La fonction read_table() de pandas est conçue pour lire des fichiers texte délimités (par ex. une feuille de calcul enregistrée en texte, avec des virgules pour séparer les colonnes) vers un dataframe. Notre fichier texte n’est pas délimité. C’est juste un copier-coller de texte. Cependant, utiliser pandas peut être pratique pour visualiser rapidement le contenu, car la syntaxe de cette fonction est proche de read_csv(), que la plupart des data scientists connaissent.

Le code ci-dessous permet de lire un fichier texte avec pandas.

pd.read_table('nlp_wiki.txt', header=None, delimiter=None)

Sortie :

image1.png

Nous passons le nom du fichier texte et deux arguments à la fonction read_table(). 

  • header=None indique à pandas que la première ligne contient du texte et non un en-tête. 
  • delimiter=None indique à pandas de ne scinder les lignes nulle part (sauf aux sauts de ligne), de sorte qu’il y ait une seule colonne avec une ligne par ligne du fichier.

Dans ce cas, un DataFrame n’est pas toujours idéal. Les paragraphes sont séparés en lignes individuelles (pandas utilise le caractère de saut de ligne pour cela) et l’on ne voit pas tout le texte. Une autre option consiste à appeler la méthode .to_list() sur la colonne.

pd.read_table('nlp_wiki.txt', header=None, delimiter=None)[0].to_list()

Sortie :

image2.png

Cela renvoie une liste de listes, accessible comme une liste Python classique. Le texte complet s’affiche également.

Personnaliser l’import avec read_table()

La fonction read_table() propose de nombreux paramètres optionnels, détaillés dans la documentation officielle. En voici quelques-uns parmi les plus utiles :

skiprows=n

image3.png

Ignore les n premières lignes. Dans notre exemple, nous avons ignoré la première ligne.

nrows=n

image4.png

Conserve les n premières lignes. Dans notre exemple, nous avons conservé la première ligne.

skip_blank_lines= True  

pandas sautera les valeurs NaN au lieu de renvoyer une ligne vide.

Importer des données texte avec loadtxt() de NumPy

loadtxt() de NumPy est conçue pour lire des tableaux de nombres depuis un fichier texte ; toutefois, elle peut aussi lire des lignes de texte. C’est pratique si vous utilisez NumPy pour le reste de votre analyse, car la sortie est un tableau NumPy.

np.loadtxt('nlp_wiki.txt', dtype="str", delimiter="\0")

Sortie :

image5.png

Comme avec pandas, nous transmettons l’argument delimiter pour éviter que les lignes ne soient découpées. Ici, le délimiteur doit être un seul caractère (utiliser None a un comportement différent), donc nous utilisons un caractère de « fin de chaîne », \0. Comme il ne peut pas apparaître au milieu d’une chaîne, cela revient à dire « ne pas utiliser de délimiteur ».

Nous passons aussi dtype="str" pour indiquer à NumPy le type de données du tableau résultant. Dans notre cas, « str » renvoie des chaînes de caractères. On peut également convertir le résultat en liste avec la fonction .tolist().

Importer des fichiers texte avec la fonction native open() de Python

La flexibilité maximale s’obtient avec les fonctionnalités natives de Python. C’est moins convivial et surtout pensé pour l’ingénierie logicielle. Pour l’analyse de données, les solutions pandas ou NumPy suffisent généralement.

Pour utiliser open(), il faut aussi un gestionnaire de contexte, via le mot-clé with. Il alloue les ressources de votre machine uniquement pendant l’exécution du code indenté sous with. Ici, nous ouvrons le fichier, le parcourons et stockons son contenu en mémoire dans la variable lines, puis nous le fermons.

La boucle for ci-dessous utilise une compréhension de liste : chaque élément correspond à une ligne telle qu’interprétée par la fonction open(), ici un saut de ligne (\n).

Ce bloc de code utilise aussi la fonction strip(), qui supprime les espaces superflus avant et après chaque élément (ou ligne).

with open(filename) as file:
    lines = [line.strip() for line in file]

Sortie :

image7.png

Comme vous le voyez, cela renvoie une seule liste où chaque élément est un paragraphe. Contrairement aux exemples pandas et NumPy, nous avons ici trois objets, car le texte d’origine contient deux sauts de ligne entre les paragraphes.

Écrire des fichiers texte en Python 

Maintenant que nous avons vu comment importer des fichiers texte en Python, passons à l’écriture de fichiers texte. Écrire un fichier signifie enregistrer un fichier texte sur votre machine depuis Python. C’est particulièrement utile lorsque vous avez manipulé du texte en Python et souhaitez sauvegarder le résultat. 

Écrire des fichiers texte avec la méthode native write()

Vous pouvez écrire des fichiers texte en Python avec la méthode native write(). Elle nécessite également d’utiliser open() et un gestionnaire de contexte avec le mot-clé with. Illustrons avec un exemple :

with open("new_nlp_wiki.txt", "w") as file:
  file.write("New wiki entry: ChatGPT")

Dans cet exemple, nous ouvrons un fichier nommé new_nlp_wiki.txt en mode écriture (argument 'w'), ce qui écrase tout contenu existant. Nous appelons ensuite la méthode write() sur l’objet fichier pour y écrire la chaîne « New wiki entry: ChatGPT ».

Si vous souhaitez ajouter du texte à un fichier existant sans l’écraser, ouvrez-le en mode ajout (argument 'a') :

with open("new_nlp_wiki.txt", "a") as file:
    file.write("New wiki entry: ChatGPT")

Écrire des fichiers texte avec la méthode to_csv() de pandas

La manière la plus simple d’écrire un fichier texte avec pandas est sans doute d’utiliser la méthode to_csv(). Voyons-la en action !

nlp_wiki = pd.read_table("nlp_wiki.txt", header=None, delimiter=None)
nlp_wiki.to_csv("nlp_wiki_pandas.txt", sep="\t", index=False)

Dans la première ligne, nous lisons un fichier texte avec la méthode read_table() vue plus haut. Puis nous enregistrons le fichier avec to_csv() en spécifiant le séparateur comme un caractère de tabulation ('\t') et en passant index=False pour exclure l’index des lignes de la sortie.

Récapitulatif

Nous espérons que ce tutoriel vous a plu ! Pour récapituler, nous avons couvert :

Sujets
Python

Cours Python

Cours

Introduction à Python

4 h
7.1M
Apprenez les bases de l’analyse de données avec Python en quatre heures et explorez ses principaux packages.
Voir les détailsCommencer Le Cours

Créez votre compte gratuit

S'entraîner et cursus vos progrès.

Continuer Avec Google
En continuant, vous acceptez nos Conditions d'utilisation, notre Politique de confidentialité et le fait que vos données seront hébergées aux États-Unis.
Voir plus
Contenus associés

Tutoriel

Tableaux Python

Tableaux Python avec exemples de code. Découvrez comment créer et imprimer des tableaux à l'aide de Python NumPy dès aujourd'hui.
DataCamp Team's photo

DataCamp Team

3 min

Tutoriel

Tutoriel Python : concaténation de chaînes de caractères

Découvrez différentes méthodes pour concaténer des chaînes de caractères en Python, avec des exemples illustrant chaque technique.
DataCamp Team's photo

DataCamp Team

5 min

Tutoriel

Tutoriel Python sur les structures de données

Initiez-vous aux structures de données de Python : apprenez-en plus sur les types de données et les structures de données primitives et non primitives, telles que les chaînes de caractères, les listes, les piles, etc.
Sejal Jaiswal's photo

Sejal Jaiswal

24 min

Tutoriel

Tutoriel et exemples sur les fonctions et méthodes des listes Python

Découvrez les fonctions et méthodes des listes Python. Veuillez suivre les exemples de code pour list() et d'autres fonctions et méthodes Python dès maintenant.
Abid Ali Awan's photo

Abid Ali Awan

7 min

Tutoriel

Tutoriel sur les méthodes .append() et .extend() de Python

Apprenez à utiliser les méthodes .append() et .extend() pour ajouter des éléments à une liste.
DataCamp Team's photo

DataCamp Team

2 min

Tutoriel

30 astuces Python pour un meilleur code, avec exemples

Nous avons sélectionné 30 astuces Python pour améliorer votre code et développer vos compétences en Python.
Kurtis Pykes 's photo

Kurtis Pykes

15 min

Voir plus