Commandes python et structure XML

Commandes Python

  • Etapes obligatoires :
    • Récupérer le code source d'une page html
    • Nettoyer le code source à l'aide d'expressions régulières
    • Générer un fichier de résultat contenant le code source nettoyé
    • Opérer des décomptes sur le texte (caractères, mots, phrases)
    • Générer un fichier de résultat contenant les résultats des décomptes

    J'ai choisi la page http://home.urbanet.ch/urba7038/motscroises/lexique/palindrome.htm car j' apprécie le texte.

Voici ci-dessous le code commenté de mon script:

#!/usr/bin/python
#-*- coding: utf-8 -*-
## importation librairies url et re
import urllib, re

##établissement connexion variable url
url = urllib.urlopen("http://home.urbanet.ch/urba7038/motscroises/lexique/palindrome.htm")

## copier code source dans variable codehtml et afficher
codehtml = url.read()
print codehtml

## nettoyer et déplacer dans variable texte
texte = re.sub("<.*?>","",codehtml)
texte = re.sub("&nbsp;","",texte)
texte = re.sub("&quot;","'",texte)
               
## séparer en une liste les mots du texte
expr = re.compile("\W+",re.U)
listedemots = expr.split(texte)
listedemots.sort()

## les commandes suivantes permettent d' établir un dico du texte en ne relevant que les mots différents et leur assignant la valeur absolue de leurs occurences
dicoFreq ={}
## pour chaque mot dans la liste précédemment établie
for mot in listedemots:
    #si le mot n'existe pas déjà dans la liste (le dico)
    if mot not in dicoFreq:
        dicoFreq[mot] = 1
    #sinon il existe et sa valeur est égale à la précédente+1
else: dicoFreq[mot] =dicoFreq[mot]+1



## création de deux fichiers en ecriture
fichier = open("palindrome.txt","w")
fichier2 = open("infostat.txt","w")


## décoder avec le bon charset et afficher texte
texte = texte.decode("windows-1252")
print texte
               
## repasser en utf-8 avant d'écrire car .txt  texte brut
texte=texte.encode("utf-8")
##écrire le texte nettoyé dans palindrome.txt 
fichier.write(texte)

## écrire les statistiques à l'aide du dico dans infostat.txt
fichier2.write("Le texte contient "+ str(len(texte)) + " caracteres,\n")
fichier2.write("soit "+ str(len(listedemots))+" mots mais "+str(len(set(listedemots)))+" mots differents.\n\n\n")
fichier2.write(" ".join(sorted(set(listedemots))))
fichier2.write("\n\n")
fichier2.write("La fréquence la plus élevée est :" +str(max(dicoFreq.values()))+"\n")

for clef in sorted(dict.iterkeys(dicoFreq)):
    fichier2.write(clef +"\t" + str(dicoFreq[clef])+ "\n")
    
## fermer les fichiers créés en écriture    
fichier.close()
fichier2.close()

Télécharger script (clic droit)

...

Fichier texte nettoyé palindrome.txt

...

Fichier statistique infostat.txt

Structure XML

Voici ci-dessous la structure imagée de mon dictionnaire:

...

Fichier XML