Initiation à la programmation ENSAE 1A

seance4_module_fichier_regexp_cor.tex

nombres aléatoires


import random
alea = [ random.random() for i in range(10) ]
print (alea)
random.shuffle(alea)
print (alea)

dates


from datetime import datetime
date1 = datetime(2013,9,9)
date0 = datetime(2013,8,1)
print (date1 - date0)
birth = datetime (1975,8,11)
print (birth.weekday())  # lundi

manipulation de colonnes et Excel


with open ("seance4_excel.txt", "r") as f :
    mat = [ row.strip(' \n').split('\t') for row in f.readlines() ]
    
mat = mat [1:]
res = [ [ None ] * 3 for i in range(5) ] 
for i,j,v in mat :
    res [ int(j)-1 ] [ int (i)-1 ] = float(v)

with open ("seance4_excel_mat.txt", "w") as f :
    f.write ( '\n'.join ( [   '\t'.join( [ str(x) for x in row ] ) for row in res ] ) )    

corrections de l'exercice sur les expressions régulières

		
import pyensae
discours = pyensae.download_data('voeux.zip', website = 'xd')

exp = re.compile ("je .{1,60}", re.IGNORECASE)
for d,text in discours.items() :
		je = exp.findall(text)    
		for t in je :
				print (t)
		print ("")

recherche des phrases commençant par je (issue de secours)

#coding:latin-1
import urllib.request, os, os.path, re
def charge_discours () :
    discours = { }
    for annee in [2001, 2005, 2006, 2007, 2008, 2009, 1974, 1975,
                    1979, 1983, 1987, 1989, 1990, 1994] :
        nom = "VOEUX%02d.txt" % (annee % 100)
        if os.path.exists (nom) :
            # si le fichier existe (il a déjà été téléchargé une fois)
            with open (nom, "r") as f :
                text = f.read ()
        else :
            # si le fichier n’existe pas
            link = "http://www.xavierdupre.fr/enseignement/td_python/" + \
            "python_td_minute/data/voeux_presidents/" + nom
            url = urllib.request.urlopen (link)
            text = url.read ().decode("latin-1")
            # on enregistre les données pour éviter de les télécharger une seconde fois
            with open (nom, "w") as f :
                f.write (text)
        discours [annee] = text
    return discours

if __name__ == "__main__" :
    discours = charge_discours ()
    print ("nombre de discours ", len(discours))
    
    exp = re.compile ("je .{1,60}", re.IGNORECASE)
    for d,text in discours.items() :
        je = exp.findall(text)    
        for t in je :
            print (t)
        print ("")