IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

saut de ligne dans un fichier texte


Sujet :

Python

  1. #1
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut saut de ligne dans un fichier texte
    Bonjour
    je suis entraint de rediger un scripte qui parcour tous la chaine d'un fichier txt et recherche un mot cle et donne sa position dans le texte et aussi la ligne,
    que voila:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    def rech(cle,chem):
        core=open(chem,'r')
        core=core.read()
        core=str(core)
        ch=[]
        ch2=[]
     
        a=0
        for i in core:
            if i !=' ':
                ch.append(i)
     
            elif i==' ':
                x=''.join(ch)
                ch2.append(x)
                ch=[]
     
     
        b=0
        for i in ch2:
            b=b+1
            if i==cle:
                print(i+'   position: '+str(b)+'  ligne: '+str(a))
     
    rech('les','makaveli.txt')
    mais je ne trouve pas de solution pour les ligne ,ou precisement je ne peux pas metre un '\n' dans une condition a linterieur d'une boucle for comme ceci par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ch3=[]
    chem='makaveli.txt'
    core=open(chem,'r')
    core=core.read()
    core=str(core)
    for i in core:
        if i==''''\'''' or'n' :
            ch3.apend(i)
        print(ch3)
    j'ai bon essayer de trouver une solution mais rien ,
    merci de m'aider.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Concernant les chaînes de caractères, Python a un fort héritage du langage C et le '\' n'est pas un caractère simple mais une balise (antislash) qui signale qu'il faut prendre en compte le ou les caractères suivant pour fabriquer l'octet correspondant.
    '\n' fabrique une fin de ligne i.e. (pour simplifier) un octet dont la valeur décimale sera 10.
    Il en est de même pour '\x0a' dans lequel '\x' dit les deux caractères suivants sont un nombre hexadécimal (4 caractères pour fabriquer un seul octet!)
    Donc pour tester si un caractère est '\n', il suffit d'écrire i == '\n' (et en profiter pour (re)voir le chapitre sur les "strings" de son tuto préféré).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 984
    Points
    30 984
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par animalx123 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    core=open(chem,'r')
    core=core.read()
    core=str(core)
    Bonjour

    Vu que tu as perdu ton pointeur fichier (ce qui a été retourné par open() que tu as récupéré dans "core" qui a été écrasé ensuite), tu veux bien m'expliquer comment tu vas pouvoir manipuler ton fichier ensuite (continuer la lecture, le fermer, etc...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre averti

    Profil pro
    En reconversion
    Inscrit en
    Novembre 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Novembre 2007
    Messages : 180
    Points : 351
    Points
    351
    Par défaut
    Désolé de le dire, mais il y a encore du boulot pour commencer à maîtriser un minimum.
    Cela ressemble aux questions qui cherchent une réponse toute faite afin de ne pas avoir à se donner de la peine à chercher. Je me trompe peut être ...

    Je suis débutant en Python donc il y aura probablement quelque chose de plus optimisé à faire. A priori il n'y a pas d'erreur. Ici, les deux fichiers doivent être dans le même dossier.

    Exemple d'un fichier texte test.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    je vais à l'école
    à midi, je passe à la cantine
    je rentre à la maison
    je commence mes devoirs
    je pars à la bibliothèque
    Et le fichier Python :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    fichier = 'test.txt'
     
    # utilisez un context (avec le mot clé "with") qui permettra de fermer automatiquement le fichier à la fin du programme
    with open(fichier) as f:
        dictionnaire_des_mots = {}      # on crée un dictionnaire vide qui va contenir les mots et leur position
        num_ligne = 0                   # compteur de ligne
        for ligne in f:                 # on itère sur le fichier
            num_ligne += 1              # on incrémente le numéro de ligne à chaque itération
            liste_mot_ligne = ligne.split()     # on crée une liste des mots de la ligne
            liste_mot_ligne_numerote = enumerate(liste_mot_ligne)      # on ajoute un index à chaque mot dans la liste
     
            for num_mot, mot in liste_mot_ligne_numerote:       # on itère sur la liste de mots numérotées
                if mot not in dictionnaire_des_mots:            # si le mot n'est pas déjà dans le dictionnaire
                    dictionnaire_des_mots[mot]=[(num_ligne, num_mot+1)]     # j'ajoute le mot ainsi que le numéro de la ligne et l'index du mot dans la ligne
                else:                                           # sinon (donc le mot a déjà été trouvé précédement
                    dictionnaire_des_mots.get(mot).append((num_ligne, num_mot+1))   # j'ajoute la nouvelle référence au mot
     
    print(dictionnaire_des_mots)
    Il reste à traiter la recherche d'un mot en particulier. C'est une dictionnaire donc il suffit d'utiliser la méthode get() sur l'objet dictionnaire_des_mots. Dans mon cas j'ai préféré enregistrer tous les mots avec les références à côté. Mais on peut bien sûr prendre en compte le filtre du mot recherché dès le début.

    Bon courage pour la suite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/07/2016, 09h36
  2. saut de ligne dans un fichier texte ?
    Par jessy212 dans le forum Access
    Réponses: 12
    Dernier message: 23/08/2006, 17h05
  3. Réponses: 7
    Dernier message: 28/06/2006, 13h31
  4. [MFC] Saut de ligne dans un fichier texte
    Par le-makinero dans le forum MFC
    Réponses: 2
    Dernier message: 18/04/2006, 10h40
  5. Réponses: 2
    Dernier message: 02/03/2004, 19h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo