CodeEleve.py
1 | # programme créant un identifiant unique avec les premières lettres du nom et du prenom
|
---|---|
2 | # afin d'utiliser codegrid de Auto Multiple Choice
|
3 | # Permet de tester le nombre de lettres à utiliser
|
4 | # lit un fichier ListeEleves.csv
|
5 | # et crée un fichier ListeElevesUnique.csv
|
6 | # V. Riboulet mars 2018
|
7 | |
8 | import unidecode # pour la conversion en ASCII |
9 | |
10 | N = 3 # nombre de caractères prit dans le début du nom |
11 | M = 3 # nombre de caracteres prit dans le début du prenom |
12 | |
13 | fichier = open("ListeEleves.csv", "r") # ouverture du fichier, au format AMC 'classique', colone identifant = 'num' |
14 | EnTete = fichier.readline() |
15 | #print(EnTete)
|
16 | Liste = EnTete.split(",") # suppose que les séparateurs sont des virgules |
17 | IndicePrenom = Liste.index("prénom") # cherche la colone prénom |
18 | IndiceNom = Liste.index("nom") # cherche la colone nom |
19 | IndiceNum = Liste.index("num") # cherche la colone num (la clé) |
20 | |
21 | Newfichier = open("ListeElevesUnique.csv", "w") # nouveau fichier en mode écriture |
22 | Newfichier.write(EnTete) # recopiage de l'entete
|
23 | |
24 | L = [] # initialisation liste des codes uniques
|
25 | n=0 # initialisation compteur d'étudiants |
26 | |
27 | for ligne in fichier: |
28 | Liste = ligne.split(",") # on met les élèments d'une ligne dans une liste |
29 | |
30 | nom = Liste[IndiceNom] # récupération du nom dans la liste
|
31 | nom = "".join(nom.split(" ")) # pour virer les espaces |
32 | nom = "".join(nom.split("-")) # pour virer les tirets |
33 | nom = unidecode.unidecode(nom) # pour virer les accents et cédiles (ASCII)
|
34 | |
35 | prenom = Liste[IndicePrenom] # récupération du prenom dans la liste
|
36 | prenom = "".join(prenom.split(" ")) # pour virer les espaces |
37 | prenom = "".join(prenom.split("-")) # pour virer les tirets |
38 | prenom = unidecode.unidecode(prenom) # passage en ASCII
|
39 | |
40 | code = nom[:N] + prenom[:M] # création du code à partir du début du nom et prénom
|
41 | code = code.upper() # passage en majuscules
|
42 | #print(code)
|
43 | |
44 | code = "".join(set(code)) # enlève les lettres en doublon |
45 | #print(code)
|
46 | |
47 | etu = "".join(sorted(code)) # range dans l'ordre alphabétique |
48 | #print(etu)
|
49 | |
50 | L.append(etu) # on stocke dans une liste pour pouvoir tester les doublons
|
51 | n += 1 # on incrémente le nombre d'étudiants |
52 | |
53 | Liste[IndiceNum] = etu # on met en place le nouveau code dans la liste ligne
|
54 | NewLigne = ",".join(Liste) # crée la nouvelle ligne |
55 | Newfichier.write(NewLigne) # l'écrit dans le fichier
|
56 | |
57 | fichier.close() # on ferme les fichiers ouverts
|
58 | Newfichier.close() |
59 | |
60 | print(n, "etudiants")
|
61 | print("avec les", N, "premières lettres du nom et les", M, "premières lettres du prénom") |
62 | print(len(set(L)), "codes différents") |
63 | #print(set(L))
|