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 :

fichier texte vers dictionnaire [Python 3.X]


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Désenvouteur Informatique
    Inscrit en
    Août 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Désenvouteur Informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut fichier texte vers dictionnaire
    Bonjour à tous,
    Je cherche à structurer le fichier texte suivant en vue de l'intégrer à une base de données. J'ai sais que l'on peut utiliser sqlite avec python, mais je crains que ça ne complique encore les choses.

    J'essaie donc de créer un dictionnaire contenant pour chaque titre son auteur, sa rubrique, sous rubrique, page et numéro de revue. pour les 1ere lignes ça donnerait :
    'Du côté de la poésie et de l'espoir','Editorial',,,'Louis Pauwels','5','N°1'

    Voici le fichier texte du numéro 3, je me suis déjà paluché les deux premiers à la main :
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    = N°3 =
     
    == Editorial ==
    5
    Du côté de la poésie et de l'espoir
    par Louis Pauwels
     
    == Chronique de notre civilisation ==
    9
    Trois hommes sur le bateau
     
    == Le mouvement des connaissances ==
    15
    Boucher de Perthes
    par Stéphane Arnaud
    Le génie que j'ai vu vivre en liberté
    par George Magloire
    Quelle formidable machine que l'homme!
    Par Aldoux Huxley
     
    == Les civilisations disparues ==
    41
    Le plus ancien "haut-lieu" du monde?
    Par Daniel Ruzo
     
    == L'art fantastique de tous les temps ==
    49
    Assur : grandeur et terreur
    par Jacques Ménétrier
    Un peintre fantastique inconnu
    par Jacques Sternberg
     
    == Les ouvertures de la science ==
    71
    Interview d'un calculateur prodige
    par Jacques Mousseau
    Trois fenêtres sont ouvertes sur l'infini
    par Jacques Bergier
     
    == La littérature différente ==
    83
    Voltaire, contemporain de l'ère cosmique
    par Aimé Michel
    Le pacifiste
    par Arthur C. Clarke
     
    == Les mystères du monde animal ==
    95
    A la recherche du serpent de mer
    par Bernard Heuvelmans
     
    == L'histoire invisible ==
    105
    Quand l'Angleterre cessa d'être une île
    par Gabriel Véraldi
     
    == L'amour à refaire ==
    113
    Le couple, le foyer, la femme, la liberté
    Propos choisis de G.-K. Chesterton
     
    == Informations et Critiques, Analyse des Œuvres, des Idées, des Travaux et desDécouvertes ==
    === L'histoire ===
    122
    Un étonnant témoignage
    La première histoire de la Géologie
    L'Histoire en action
     
    128
    === L'archéologie ===
    Première utilisation d'une machine à remonter le temps / Le mystère des tectites / Fouilles et découvertes récentes
    130
    === La sociologie ===
    Un livre extraordinaire / Un ouvrage important / Arthur Koestler / La Société Pierre Teilhard de Chardin
     
    139
    === Une nouvelle vague en sciences ===
    Surhommes et dauphins / Un des ouvrages les plus importants de notre époque
     
    143
    === Les arts anciens et modernes ===
    Bilan d'une exposition capitale / Bilan d'une exposition inutile
     
    146
    === La civilisation noire ===
    Révélation sur la magie au Congo
     
    148
    === La culture en U.R.S.S. ===
    Un documenL sur l'art abstrait
     
    150
    === La littérature anglo-saxonne ===
    Un extraodinaire témoignage sur les trafics de chaire humaine / Une anthologie française de l'humour anglo-américain
     
    153
    === Le cinéma ===
    Points de vue sur l'aventure Renoir
     
    155
    === La télévision ===
    Une déclaration de Louis Merlin
     
    157
    === La géo-politique ===
    Une histoire mondiale du pétrole
     
    158
    === La musique ===
    «La voix humaine» / J .-S. Bach
    Le fichier est formaté pour mediawiki, il me semblai que ce serait plus simple pour repérer quelle ligne correspond à quoi.

    Et voici mon code, qui échoue avec un : line 35, in <module>
    planete[titre]=(rubrique,srubrique,ssrubrique,auteur,npage,nrevue)
    NameError: name 'rubrique' is not defined
    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
    #TODO: lis le fichier C:\Datas\Planete
    fs = open('C:\\Datas\\Planete1.txt', encoding="utf8") #fs : fichier source
    #fd = open('C:\\Datas\\PlaneteD.txt', encoding="utf8") #fd : fichier destination
     
    while 1:
        ft = fs.readline()  # ft : fichier de travail
        print(ft)
        # TODO: si la ligne commence par "= ": c'est un numero-revue
        if ft.startswith('= '):
            nrevue = ft
        #TODO: si la ligne commence par "== ": c'est une rubrique
        elif ft.startswith('== '):
            rubrique = ft
        #TODO: si la ligne .startswith('=== '): c'est une sous-rubrique
        elif ft.startswith('=== '):
            srubrique = ft
        #TODO: si la ligne .startswith('==== '): c'est une sous-sous-rubrique
        elif ft.startswith('==== '):
            ssrubrique = ft
        #TODO: si la ligne.lower() .startswith('par ','un entretien de ','avec ','présentées par ','Propos choisis de ','de '):
        #c'est l'auteur de l'article
        elif ft.lower().startswith('par ','un entretien de ','avec ','présentées par ','propos choisis de ','de '):
            auteur = ft
        #TODO: si la ligne .isalpha(): c'est le titre-article
        elif ft.isalpha():
            titre = ft
        #TODO: si la ligne isdecimal(): c'est le numero-page
        elif ft.isdecimal():
            npage = str(ft)
        #TODO: si la ligne est vide, passer
        elif ft.isspace():
            pass
        planete[titre]=(rubrique,srubrique,ssrubrique,auteur,npage,nrevue)
    Désolé si mon code ne mène nul part, je suis au max la

    Merci,
    Wom

  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,

    Quand j'ai ce genre de problème, je procède par étapes.
    Déjà, il faut essayer de repérer dans votre fichier les blocs qui se répètent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    == Editorial ==
    5
    Du côté de la poésie et de l'espoir
    par Louis Pauwels
     
    == Chronique de notre civilisation ==
    9
    Trois hommes sur le bateau
    Et vous voyez (ou pas) qu'un bloc d'information commence à une ligne qui débute par '==' et comprend toutes les lignes suivantes jusqu'à la prochaine ligne vide.
    Donc dans un premier temps, il faut découper le fichier en blocs puis traiter chaque bloc pour en sortir la catégorie, le nombre de pages, la liste des titres suivis optionnellement de leur auteur. Ce qui suggère la structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for bloc in get_blocs(fichier):
         categorie, pages, titres = get_infos(bloc)
         print (categorie, pages, titres)
    Maintenant, pour entrer dans les détails de get_blocs et get_infos, il faut choisir des entrées qui soient significatives histoire de pouvoir tester les différents cas de figures. Alors on peut commencer à coder séparément get_blocs et get_infos.

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Points : 482
    Points
    482
    Par défaut
    Bonsoir,

    Au vu du formatage cela sera compliqué d'extraire votre texte à l'aide de conditions car ça impliquera de tester chaque cas et d'imbriquer pas mal de boucle.

    Je partirai sur la même idée que wiztricks mais non pas de manière itérative comme vous avez commencé à faire mais en utilisant les expressions régulières (regex):
    Un cours en français assez complet sur le sujet et l'application en python : https://docs.python.org/fr/3/howto/regex.html

    Voici un outil en ligne qui vous permettra de vous faire la main : https://regex101.com/
    La syntaxe est très complexe et peu intuitive il faut le reconnaître mais il n'y a pas plus efficace.

    Un exemple :

    Pour extraire chaque portion de niveau 2 (== titre ==) :

    Note : Pour capturer le dernier bloc j'ai dû m'aider en rajoutant "==" sur la dernière ligne de votre exemple pour permettre de délimiter la fin du bloc, encore qu'il doit être possible de régler ça mais ce n'est pas bien gênant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^={2}\s(.|\n)*?^(?=\={2}\s)
    Explication :

    • ^ : début de ligne
    • ={2}\s correspond à "== " qu'on peut écrire aussi sous cette forme mais c'est moins visible à travers l'expression, ici il suffit de changer le nombre pour changer de niveau
    • (.|\n) Tous les caractères (.) en dehors du retour à la ligne ou (|) le retour à la ligne (\n)
    • *? Répète le match du groupe (.|\n) autant de fois de possible jusqu'à la prochaine correspondance (pas évident à traduire la signification)
    • (?=\={2}\s) Jusqu'au nouveau bloc "== " exclus




    ça donne ceci :

    Groupe 1:
    == Editorial ==
    5
    Du côté de la poésie et de l'espoir
    par Louis Pauwels


    Groupe 2:
    == Chronique de notre civilisation ==
    9
    Trois hommes sur le bateau


    Groupe 11 :
    == Informations et Critiques, Analyse des Œuvres, des Idées, des Travaux et desDécouvertes ==
    === L'histoire ===
    122
    Un étonnant témoignage
    La première histoire de la Géologie
    L'Histoire en action

    128
    === L'archéologie ===
    Première utilisation d'une machine à remonter le temps / Le mystère des tectites / Fouilles et découvertes récentes
    130
    === La sociologie ===
    Un livre extraordinaire / Un ouvrage important / Arthur Koestler / La Société Pierre Teilhard de Chardin

    139
    === Une nouvelle vague en sciences ===
    Surhommes et dauphins / Un des ouvrages les plus importants de notre époque

    143
    === Les arts anciens et modernes ===
    Bilan d'une exposition capitale / Bilan d'une exposition inutile

    146
    === La civilisation noire ===
    Révélation sur la magie au Congo

    148
    === La culture en U.R.S.S. ===
    Un documenL sur l'art abstrait

    150
    === La littérature anglo-saxonne ===
    Un extraodinaire témoignage sur les trafics de chaire humaine / Une anthologie française de l'humour anglo-américain

    153
    === Le cinéma ===
    Points de vue sur l'aventure Renoir

    155
    === La télévision ===
    Une déclaration de Louis Merlin

    157
    === La géo-politique ===
    Une histoire mondiale du pétrole

    158
    === La musique ===
    «La voix humaine» / J .-S. Bach



    Puis ensuite pour extraire les sous-niveaux, en prenant le groupe 11 par exemple (le dernier morceau) :

    Note : même problème il faut rajouter "===" en fin de texte pour permettre d'extraire le dernier bloc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^={3}\s(.|\n)*?^(?=\={3}\s)

    Groupe 11.1 :
    === L'histoire ===
    122
    Un étonnant témoignage
    La première histoire de la Géologie
    L'Histoire en action

    128


    Groupe 11.2 :
    === L'archéologie ===
    Première utilisation d'une machine à remonter le temps / Le mystère des tectites / Fouilles et découvertes récentes
    130

    etc...

    Je ne suis pas sûr de l'interprétation du contenu, si le numéro correspond au groupe d'après il suffit d'identifier jusqu'à la ligne vide ^.{0}$

    Mais là ça risque d'être velu :

    Une piste serait de faire un truc dans le genre :

    et de l'arrêter à la 2ème occurrence de "== "



    Bref... bon courage

  4. #4
    Candidat au Club
    Homme Profil pro
    Désenvouteur Informatique
    Inscrit en
    Août 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Désenvouteur Informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour, merci de vos réponses!!
    Je regarde tout ça aujourd'hui au lieu de bosser!

  5. #5
    Candidat au Club
    Homme Profil pro
    Désenvouteur Informatique
    Inscrit en
    Août 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Désenvouteur Informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Salut,
    J'ai un peu avancé sur mon problème, même si n'est pas avec re ou les get_block/info, je garde ça pour les prochaines étapes.

    J'ai remis en forme mon texte pour qu'il ai toujours la même structure :
    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
    = N°3 =
     
    == Éditorial ==
    5
    Du côté de la poésie et de l'espoir
    par Louis Pauwels
     
    == Chronique de notre civilisation ==
    9
    Trois hommes sur le bateau
    par la rédaction
     
    == Le mouvement des connaissances ==
    15
    Boucher de Perthes
    par Stéphane Arnaud
     
    00
    Le génie que j'ai vu vivre en liberté
    par George Magloire
     
    00
    Quelle formidable machine que l'homme!
    Par Aldous Huxley
    Ensuite je préfixe les lignes pages et auteurs :
    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
    conditions = "avec des articles de", "avec", "de ", "de notre envoyé spécial à Genève", \
                 "de notre envoyé spécial aux U.S.A.", "entretien avec", "nouvelle de", "présentées par", \
                 "Propos choisis de", "par", "reportage photographique de", "un entretien", "une nouvelle de", \
                 "un texte inédit de", "un inédit de", "un conte de"
    #la ligne auteur peut commencer d'une des manières précédente. je les déclare pour utiliser la variable conditions
     
    out = open('C:\\Datas\\N3-pa.txt', 'w', encoding="utf8") #fichier de destination
     
    with open('C:\\Datas\\N3.txt', encoding="utf8") as f:
        for line in f:
            line = line.rstrip()
            if line.isdecimal():
                line = '<p>'+line+'\n'
                out.write(line)
            elif line.lower().startswith(conditions): #si en minuscule la ligne commence avec une des conditions
                line = '<a>'+line+'\n'
                out.write(line)
            else:
                out.write(line+'\n')
    Ce qui, je crois, simplifiera la suite :
    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
    = N°3 =
     
    == Éditorial ==
    <p>5
    Du côté de la poésie et de l'espoir
    <a>par Louis Pauwels
     
    == Chronique de notre civilisation ==
    <p>9
    Trois hommes sur le bateau
    <a>par la rédaction
     
    == Le mouvement des connaissances ==
    <p>15
    Boucher de Perthes
    <a>par Stéphane Arnaud
     
    <p>00
    Le génie que j'ai vu vivre en liberté
    <a>par George Magloire
     
    <p>00
    Quelle formidable machine que l'homme!
    <a>Par Aldous Huxley
    Mon problème actuel est d'ajouter un préfixe <t> à la ligne titre (entre la page et l'auteur). line.isalnum() ne fonctionne pas s'il n'y a pas que des lettres dans la ligne. Comment faire pour prendre en compte les lettres et la ponctuation, ou pour ne pas préfixer les ligne vides?

    edit : il suffit que je l'écrive pour trouver que si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            if line.isdecimal():
                line = '<p>'+line+'\n'+'<t>'
                out.write(line)
    ça fonctionne.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Points : 482
    Points
    482
    Par défaut
    C'est une bonne idée d'essayer de baliser votre contenu.

    Mais je pense que vous auriez beaucoup plus simple à le faire avec un éditeur de texte avancé, comme Notepad++.

    Avec la fonction macro d'enregistrement des actions/écritures et recherche, c'est assez efficace si on parvient à trouver le terme permettant de passer d'un bloc à un autre.
    Et ça gère les expressions régulières.

    Prenez la peine d'essayer ça devrait solutionner votre problème en moins de deux et sans nécessiter de codage.

    Exemple pour identifier les lignes contenant uniquement un nombre :

    ^ : début et fin de ligne : $
    \d+ Nombre de longueur indéterminé

    Nom : Notepad++ Recherche Expression régulière.png
Affichages : 1522
Taille : 27,0 Ko

    Ensuite on démarre l'enregistrement d'une macro avec le bouton enregistrer :

    On place le curseur en début de fichier

    Puis il suffit de jouer la séquence qui va écrire les balises au début et à la fin :

    F3 : pour recherche la ligne contenant les nombres :
    <début/HOME> pour se placer en début de ligne
    puis on écrit la balise <p>
    <Fin/END> pour se placer en fin de ligne
    si on souhaite placer une balise fermante par exemple, comme en HTML.

    Puis on arrête la macro et il ne reste plus qu'à jouer la séquence et c'est terminé !

    Pour traiter un seul gros fichier c'est parfois suffisant.

  7. #7
    Candidat au Club
    Homme Profil pro
    Désenvouteur Informatique
    Inscrit en
    Août 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Désenvouteur Informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'ai finalement réussi à baliser la ligne de titres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    = N°3 =
     
    == Éditorial ==
    <p>5
    <t>Du côté de la poésie et de l'espoir
    <a>par Louis Pauwels
     
    == Chronique de notre civilisation ==
    <p>9
    <t>Trois hommes sur le bateau
    <a>par la rédaction
    Et même s'il y a des méthode plus simple/efficaces, j'ai envie d'apprendre python/a coder un ptit peu.

    Maintenant la question est comment passer de mon texte balisé à un dictionnaire (un dictionnaire est-il approprié pour stocker ces infos?), ou à un format csv : <t>;<p>;<a>;== ;=== ;= ? Avec .join() et .split() peut-être. Pour RE, je ne capte pas comment utiliser les résultats de re.finditer. Ni non plus comment utiliser get_block ou infos.

    Bon dimanche

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Points : 482
    Points
    482
    Par défaut
    Un dictionnaire peut être une première étape qui vous permettra plus facilement de le sortir en d'autres formats de fichiers, comme en csv, json, ou autre.

    Il faut par contre savoir qu'un dictionnaire ne conserve pas l'ordre d’insertion contrairement à une liste par exemple.

    Mais il existe OrderedDict fait pour cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    from collections import OrderedDict
     
    d['a'] = ""
    d['b'] = ""
    print(d.keys()) # 'a', 'b'
    Et il est possible de faire des dictionnaires imbriqués.

    Un exemple simple pour réaliser cela :

    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
    from collections import OrderedDict # Container datatypes
    from pprint import pprint # Data pretty printer
     
    d1 = OrderedDict() # Dictionnaire principal regroupé par niveau 1 "="
    with open(r"test.txt", encoding='utf-8') as f: # {
        for line in f: # {
            if line.startswith("= "):
                groupe_principal = line.replace("=", "").strip() # "= N°3 =\n" -> "N°3"
                d1[groupe_principal] = OrderedDict()
                d2 = d1[groupe_principal] # Variable pour utiliser le dictionnaire de niveau 2
            if line.startswith("== "):
                groupe_secondaire = line.replace("=", "").strip() # "== Éditorial ==\n" -> "Éditorial"
                d2[groupe_secondaire] = OrderedDict()
                d3 = d2[groupe_secondaire] # Variable pour utiliser le dictionnaire de niveau 3
            if line.startswith("<p>"):
                d3["paragraphe"] = line.replace("<p>", "").strip()
            if line.startswith("<t>"):
                d3["titre"] = line.replace("<t>", "").strip()
            if line.startswith("<a>"):
                d3["auteur"] = line.replace("<a>", "").strip()
        # }
    # } with
     
    pprint(d1)

    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    OrderedDict([('N°3',
                  OrderedDict([('Éditorial',
                                OrderedDict([('paragraphe', '5'),
                                             ('titre',
                                              'Du côté de la poésie et de '
                                              "l'espoir"),
                                             ('auteur', 'par Louis Pauwels')])),
                               ('Chronique de notre civilisation',
                                OrderedDict([('paragraphe', '9'),
                                             ('titre',
                                              'Trois hommes sur le bateau'),
                                             ('auteur', 'par la rédaction')]))]))])

  9. #9
    Candidat au Club
    Homme Profil pro
    Désenvouteur Informatique
    Inscrit en
    Août 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Désenvouteur Informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour votre aide, j'arrive maintenant à sortir mon texte dans un format utilisable!
    Ne me reste plus qu'à apprendre l'html5 css3 mysql et php pour créer mon site.

    Le sujet est résolu, certainement à bientôt.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/11/2006, 20h57
  2. transfert des données d'un fichier text vers un fichier excel sous VB
    Par insane_80 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/09/2006, 13h32
  3. depuis un fichier texte vers base oracle
    Par foulla002 dans le forum JDBC
    Réponses: 5
    Dernier message: 27/07/2006, 12h48
  4. [sql2k][dts] : copie fichier texte vers table
    Par gatsu07 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/06/2006, 10h53
  5. importation d'un fichier texte vers excel
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2005, 11h47

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