Partie 1 Exercice Python

  • #!/usr/bin/python
  • # -*- coding: utf-8 -*-
  • # on importe la bibliotheque URL ce qui permet d'interagir avec internet et les expressions regulieres import urllib, re
  • # on cree la variable URL qui contient la fonction urlopen qui nous connecte a notre page url = urllib.urlopen("http://mythologica.fr/grec/")
  • codehtml = url.read()
  • print codehtml
  • fichier = open("pageweb.txt","w") #creation du fichier de sortie
  • print codehtml
  • # toute les fonctions de nettoyage se trouvent avant notre fichier de sortie.
  • # pas de procedure d encodage a faire car la page est deja en utf-8
  • # nettoyage de la sortie html a voir aussi les ©
  • codehtml = re.sub(" ","",codehtml)
  • codehtml = re.sub("é", u"e", codehtml)
  • codehtml = re.sub("à",u"a", codehtml)
  • codehtml = re.sub(""",u"a", codehtml)
  • codehtml = re.sub("&#amp;",u"a", codehtml)
  • # nettoyage des doubles retour a la ligne
  • codehtml = re.sub("&\n+;"," ",codehtml)
  • # nettoyage des doubles espaces
  • codehtml = re.sub(" +"," ",codehtml)
  • # nettoyage des javascripts
  • codehtml = re.sub("","",codehtml)
  • #nettoyage ccs codehtml = re.sub("","",codehtml) # nettoyages autres codehtml = re.sub("\;","",codehtml) # suppression de balises texte = re.sub("<.*?>","",codehtml) fichier.write(texte) fichier.close()
  • # creation du fichier infostat.txt qui contiendra les resultats des decomptes qui seront effectues par le programme Python
  • infostat = open ("infostat.txt","w")
  • # utiliser la fonction len sur la variable texte permet d'obtenir le nombre de caracteres et ecrire le resultat dans le fichier de sortie
  • infostat.write("ce fichier contient"+str(len(texte))+ "caracteres.\n")
  • expr = re.compile("\W+",re.U)
  • # cette expression reguliere va nous permettre de faire des coupures la ou il y a 1 ou plus caracteres non-alphanumeriques.
  • liste = expr.split(texte) print liste # ceci nous permet de savoir combien de mots differents le texte contient
  • #infostat.write(" ".join(set(liste))) infostat.write("Le fichier contient "+str(len(liste))+" mots et "+str(len(set(liste)))+" mots differents.\n") infostat.write(" ".join(set(liste)))
  • # ceci nous permet de trier les instances du meme mot ecrites en majuscule et minuscule ensemble
  • infostat.write(" ".join(sorted(set(liste),key=str.lower)))
  • # ceci nous permet d'obtenir la frequence de chaque mot listeord = sorted(set(liste),key=str.lower)
  • # creation d'un dictionnaire appelle dicoFreq, qui va contenir des couples: (mots,frequences)
  • dicoFreq = {}
  • for mot in listeord:
  • # si le mot n'existe pas deja dans le dictionnaire
  • if mot not in dicoFreq:
  • # alors il prend une valeur de 1
  • dicoFreq[mot] = 1
  • # sinon il existe et sa valeur est egale a sa valeur precedente plus 1 else: dicoFreq[mot] = dicoFreq[mot]+1
  • for clef in sorted(dict.iterkeys(dicoFreq)): infostat.write(clef.encode("utf8") +"\t" +str(dicoFreq[clef]) +"\n")
  • listeord = sorted(set(liste),key=str.lower)
  • #Obtenir la frequence de chaque mot
  • infostat.close()
  • # Compter le nombre de phrases contenues dans le fichier dans lequel on a ecrit le contenu de la variable texte f = open('pageweb.txt','r') lignes = 1
  • for line in f.read().split('.'): #ci-dessus, on coupe les portions de texte du fichier a chaque fois que l'on trouve un point '.', on isole donc des unites assimilables a des phrase lignes = lignes + 1 #puis on ajoute 1 au compteur a chaque fois qu'une nouvelle unite est isolee dans le texte print "La page contient " +str(lignes) +" phrases. \n"
  • print "la page contient" +str(lignes) +" phrases.\n"
  • # compter le nombre de caracteres moyen par mot moyenne = nbchars / nbmots print "Le nombre moyen de caracteres par mot est : " + str(moyenne) + "\n"
  • # compter le nombre moyen de mots par phrase moyenne = nbmots / nbphr
  • f.close()
    • Voici le Résultat:
    • ce fichier contient 5779caracteres.
    • Le fichier contient 594 mots et 320 mots differents.
    • 0 00
    • Y 11969 1
    • 1981 1
    • 1989 1
    • 1992 1
    • 1995 1
    • 1996 1
    • 1998 1
    • 2 1
    • 2001 1
    • 2008 1
    • 222p 1
    • 240 1
    • 296p 1
    • 4 1
    • 408p 1
    • 4800694118207700 1
    • 5400 1
    • 576p 1
    • 600 1
    • 618p 1
    • 99CCFF 1
    • Arnot 1 Art 1 Aux 1
    • BOUGUEREAU 1 Base 1 Bonnefoy 1
    • C 1 Ces 1 Chaque 1 Comme 1 Commelin 1
    • DFF2FD 1 DOCTYPE 1 DTD 1 De 1 Dictionnaire 1 Dictionnaires 1 Du 1 Dunod 1
    • EN 1 Editions 1 Elmira 1 En 1
    • F 1
    • Grimal 1 Guy 1
    • HTML 1 Hercule 1
    • J 1
    • La 1 Larousse 1 Les 1 Litt 1
    • Mar 1 Martin 1 Museum 1 Mythologie 1
    • NY 1 Nathan 1
    • Oslash 1
    • P 1 PUBLIC 1 Paris 1 Pausanias 1 Pierre 1
    • R 1 Rachet 1
    • Schmidt 1
    • TR 1 Thibaud 1 Toutefois 1 Transitional 1
    • U 1 Une 1
    • Vous 1
    • W3C 1
    • Y 1
    • a 1 acc 1 accessible 1 adopt 1 agrave 1 allez 1 alogie 1 amp 1 ancienne 1 antique 1 antiques 1 antiquit 1 approche 1 aussi 1 auteurs 1 aux 1
    • bas 1 bibliographie 1 bien 1 butants 1
    • c 1 caract 1 ceci 1 certains 1 chaux 1 chgpage 1 cifiquement 1 civilisations 1 claire 1 classique 1 classiques 1 co 1 com 1 complexe 1 comporte 1 comportent 1 concise 1 consacr 1 contemporaines 1 copy 1 crit 1 culturel 1
    • d 1 dans 1 de 1 demi 1 der 1 des 1 description 1 deux 1 devrait 1 dieux 1 divergentes 1 diverses 1 divinit 1 document 1 donne 1 donner 1 douze 1 dtd 1 du 1
    • e 1 eacute 1 ecirc 1 egrave 1 en 1 enti 1 es 1 esses 1 est 1 et 1 existe 1
    • fiche 1 fiches 1 filiation 1 formulaire 1 function 1
    • g 1 gendes 1 google_ad_channel 1 google_ad_client 1 google_ad_format 1 google_ad_height 1 google_ad_type 1 google_ad_width 1 google_color_bg 1 google_color_border 1 google_color_link 1 google_color_text 1 google_color_url 1 googlesyndication 1 gr 1 grand 1 grands 1 grecque 1 grecques 1 grecs 1
    • h 1 histoire 1 histoires 1 href 1 html4 1 http 1
    • if 1 il 1 informations 1 instant 1
    • javascript 1 je 1 js 1
    • l 1 la 1 latine 1 le 1 les 1 leurs 1 lieu 1 liste 1 listepages 1 litt 1 location 1 loose 1
    • m 1 mais 1 matique 1 me 1 ments 1 menu 1 monde 1 multiples 1 mythologie 1 mythologies 1
    • n 1 naturelle 1 nbsp 1 nombre 1 noms 1
    • ocirc 1 oelig 1 on 1 ont 1 options 1 org 1 ou 1 outre 1
    • pagead 1 pagead2 1 par 1 parmi 1 particuli 1 partir 1 permettre 1 personnage 1 peut 1 plus 1 plusieurs 1 pour 1 pourquoi 1 pourrez 1 pouvez 1 prise 1 propose 1 pub 1 puissance 1
    • qu 1 que 1 quelques 1 qui 1 quot 1
    • r 1 ral 1 rature 1 re 1 religions 1 rement 1 rent 1 repr 1 retour 1 retrouver 1 ri 1 ristiques 1 rocher 1 romaine 1 romains 1 ros 1
    • s 1 script 1 se 1 selectedIndex 1 sent 1 sentation 1 sert 1 show_ads 1 simplifi 1 soci 1 son 1 sources 1 sp 1 src 1 suit 1 suite 1 suivants 1 sum 1 sur 1 symbolique 1
    • t 1 taient 1 tente 1 test 1 text 1 text_image 1 textes 1 th 1 tr 1 traditionnelles 1 travaux 1 tre 1 trouver 1 type 1
    • un 1 une 1 uvres 1
    • value 1 versions 1 voir 1 vol 1 vous 1 vrai 1
    • w3 1 write 1 www 1