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 :

Lecture dans un fichier et extraction de données!


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 13
    Points : 21
    Points
    21
    Par défaut Lecture dans un fichier et extraction de données!
    Bonjour à tous,


    Dans le contexte de l'utilisation de l'API d'Evernote en Python, je suis confronté à un problème que je n'ai jamais étudié en Python.
    Comme le dit le titre, je cherche un moyen de lire dans un fichier et d'y extraire des données de manière fragmentée, afin d'obtenir des informations se trouvant dans le texte.
    (Ces informations seront ensuite envoyer à un serveur dans le but de créer une Note possédant les informations issues du texte.)

    Je n'arrive pas à trouver par quel moyen raisonner pour faire cela correctement, sachant que le fichier .txt que je lirai aura environ une tête du type :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    """
    Note numéro 1
    ---
    Premier carnet de notes
    ---
    Test, Test2
    ---
    04/10/2012
    ---
    28/04/2014
    ---
    Contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    __________
     
    Note numéro 2
    ---
    Premier carnet de notes
    ---
    Test3
    ---
    01/07/2012
    ---
    28/04/2014
    ---
    Contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    __________
     
    Note numéro 3
    ---
    Premier carnet de notes
    ---
    Test, Test3
    ---
    04/11/2012
    ---
    28/04/2014
    ---
    Contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu contenu
    __________
    """
    Il me faudrait donc pouvoir lire le fichier de tel manière que je vais stocker dans une variable N de nombreuses notes (autant qu'il y en a dans le fichier), et ensuite je vais parcourir N pour créer toutes les notes une par une.

    Une des contraintes pour moi est que les notes qui possèdent entre autres les informations suivantes : titre, contenu, carnet, liste des étiquettes, date de création et date de mise à jour.
    Certains de ces paramètres sont optionnels, seul un contenu et un titre sont nécessaire, en cas d'absence du reste Evernote s'occupera de compléter les champs, ou de les laisser vierges.
    J'ai placé les "---" à titre indicatif, je ne connais pas précisément la méthode de lecture de fichier de Python, je ne sais pas comment procédé pour découper en fonction des paramètres qui seront précisés ou non.

    J'espère avoir été assez clair, si jamais il y a le moindre problème de compréhension de ce que j'ai dit, signalez-le moi.
    Merci d'avance,

    Bonne journée.

  2. #2
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    Bonjour,

    Le plus simple et de faire une liste intermédiaire que tu remplis entre chaque ___________. S'il y a bien un __________ entre chaque note .


    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
     
    class Note(object):
        def __init__(self):
            titre = ""
            contenu = ""
            carnet = ""
            tags_liste = ""
            create_date = ""
            update_date = ""
     
    lines = []
    my_file = open("mon_fichier", 'r')
    for line in my_file:
        if line == '__________': # Si chaque note est séparé par ça c'est bon.
            note = Note()
            note.titre = lines[0]
            note.carnet = lines[1]
            note.tags_liste = lines[2]
            note.create_date = lines[3]
            note.update_date = lines[4]
            note.contenu = '\n'.join(lines[4:]) # joindre les lignes du contenue
            lines = [] # RAZ
        else:        
            lines.append(line)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 13
    Points : 21
    Points
    21
    Par défaut
    Merci beaucoup, je vois en effet, j'pensais le faire avec un split, mais ça marche bien comme ça!

    Du coup j'arrive à créer mes Notes à partir d'un .txt!

  4. #4
    Membre confirmé
    Avatar de vincent.mbg
    Homme Profil pro
    Développeur Python
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Python

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 618
    Points
    618
    Par défaut
    De rien,

    Juste une dernière chose, si la dernière note ne finie pas par ____, il restera une note non traitée dans la liste 'lines'. Je ne sais pas si c'est ton cas sinon pense à vider 'lines' une fois sortie de la boucle for.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/03/2010, 09h58
  2. Réponses: 8
    Dernier message: 25/09/2007, 08h31
  3. Lecture dans un fichier
    Par unknown4 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 14/08/2005, 17h56
  4. [Débutant] Lecture dans un fichier texte
    Par babemagus dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/07/2005, 12h17
  5. Réponses: 12
    Dernier message: 14/06/2004, 13h06

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