[python] Chercher une chaine dans un fichier

phic -  
 ccadic -
Bonjour.

J'apprends python et j'aimerai faire un petit script qui permet d'ouvrir un fichier et chercher dans celui-ci des chaines de caractères (qui seront des lignes de codes d'un autre langage) et les afficher avec un print par la suite. Comment est ce que je dois m'y prendre ?

Merci d'avance.

19 réponses

Résumé de la discussion

Plusieurs réponses portent sur la façon d'ouvrir un fichier en Python, de lire ses lignes et d'afficher celles qui contiennent une chaîne de caractères cible. Des exemples montrent une approche itérative avec open, read ligne par ligne et utilisation de if mot in ligne pour imprimer les occurrences, puis la fermeture du fichier. D'autres échanges abordent le traitement de plusieurs chaînes, les retours à la ligne, les différents modes d'encodage et l'usage éventuel d'expressions régulières ou de boîtes de dialogue Tkinter pour sélectionner les fichiers. D'autres échanges suggèrent des améliorations comme tester plusieurs chaînes simultanément avec une liste et des boucles, ou employer des expressions régulières pour gérer des motifs complexes et variables.

Bobot (l'IA à votre service)
  1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Hello !

    Voici un exemple simple:
    On recherche les lignes contenant "coucou" dans le fichier fichier.txt et on les affiche:

    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
    
    chaine = "coucou" # Texte à rechercher
    
    fichier = open("fichier.txt","r")
    for ligne in fichier:
        if chaine in ligne:
            print ligne
    fichier.close()

    30
    1. phic
       
      Wa, interessant. Et si je veux chercher plusieurs chaines et les afficher ligne par ligne. Je dois creer une classe c'est ça ? je ne parviens pas a faire cela. Je peux creer une autre variable avec chaine2 = "truc" et apres mettre un elif print ligne. Mais s'il y a plus de 30 types de chaines a chercher ca risque d'etre long.
      As-tu une idée ?

      Merci de ton aide.
      0