Spécialiste des expressions régulières
Résolu/Fermé
ekdm
Messages postés
195
Date d'inscription
dimanche 13 mai 2012
Statut
Contributeur
Dernière intervention
28 août 2012
-
14 juil. 2012 à 23:24
Utilisateur anonyme - 15 juil. 2012 à 19:39
Utilisateur anonyme - 15 juil. 2012 à 19:39
A voir également:
- Spécialiste des expressions régulières
- Liste des caractères spéciaux - Guide
- Expressions régulières "ne contient pas ..." ✓ - Forum Programmation
- Comment avoir des caractères spéciaux - Guide
- Mon imprimante imprime des caractères spéciaux epson ✓ - Forum Excel
- Imprimante epson tm t20ii imprime toute seul et des symboles ✓ - Forum Imprimante
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 juil. 2012 à 23:53
14 juil. 2012 à 23:53
Bonjour,
Ce n'est pas un site de mise en relation, mais d'entraide.
Donc, pose ta question ici, et ceux qui savent t'aideront.
Ce n'est pas un site de mise en relation, mais d'entraide.
Donc, pose ta question ici, et ceux qui savent t'aideront.
ekdm
Messages postés
195
Date d'inscription
dimanche 13 mai 2012
Statut
Contributeur
Dernière intervention
28 août 2012
38
Modifié par ekdm le 15/07/2012 à 02:36
Modifié par ekdm le 15/07/2012 à 02:36
> Bonjour,
Salut,
> Ce n'est pas un site de mise en relation, mais d'entraide.
Oui j'avais bien compris, pas de souci, j'avais quand même précisé: "J'ai des question à lui poser ...", enfin bref, je vais préciser de quoi il s'agit.
> Donc, pose ta question ici, et ceux qui savent t'aideront.
J'ai trouvé la réponse (avec un peu d'aide sur une liste de diffusion), mais je vais quand même relater le contexte (et la solution, si ça peut aider d'autres personnes dans une situation similaire).
J'ai des données récupérés dans une liste de la sorte ['classe, nom prénom note1/barème1 note2/barème2 ...', ...], exemple:
Par des expressions régulières je voulais récupérer les données de la sorte:
Au départ j'avais mis en place le code:
Et les données sont récupérées de la sorte (mais ce n'est pas encore satisfaisant):
On m'a donné un coup de main (et là c'est bien mieux !):
Les données récupérées:
Personnellement je veux ces notes et barèmes sous forme de float, je l'ai donc fait avec cette comprehension list:
Et voilà ce que je récupère (exactement ce que je voulais):
a+
Salut,
> Ce n'est pas un site de mise en relation, mais d'entraide.
Oui j'avais bien compris, pas de souci, j'avais quand même précisé: "J'ai des question à lui poser ...", enfin bref, je vais préciser de quoi il s'agit.
> Donc, pose ta question ici, et ceux qui savent t'aideront.
J'ai trouvé la réponse (avec un peu d'aide sur une liste de diffusion), mais je vais quand même relater le contexte (et la solution, si ça peut aider d'autres personnes dans une situation similaire).
J'ai des données récupérés dans une liste de la sorte ['classe, nom prénom note1/barème1 note2/barème2 ...', ...], exemple:
li = ['3eA, Dupont Juliette 3.5/5.0 27.5/30.0 6.5/10.0\n', '3eA, Pop Iggy 2.5/5.0 21.0/30.0 6.0/10.0\n']
Par des expressions régulières je voulais récupérer les données de la sorte:
[['3eA', 'Dupont Juliette', [(3.5, 5.0), (27.5, 30.0), (6.5, 10.0)]], ['3eA', 'Pop Iggy', [(2.5, 5.0), (21.0, 30.0), (6.0, 10.0)]]]
Au départ j'avais mis en place le code:
>>> li = ['3eA, Dupont Juliette 3.5/5.0 27.5/30.0 6.5/10.0\n', '3eA, Pop Iggy 2.5/5.0 21.0/30.0 6.0/10.0\n'] >>> liste_data = [] >>> for parc_data in li: ... pat = re.compile("([0-9]+\.[0-9]+).([0-9]+\..)", re.UNICODE) ... liste_data.append(pat.findall(parc_data)) ...
Et les données sont récupérées de la sorte (mais ce n'est pas encore satisfaisant):
>>> liste_data [[('3.5', '5.0'), ('27.5', '30.0'), ('6.5', '10.0')], [('2.5', '5.0'), ('21.0', '30.0'), ('6.0', '10.0')]]
On m'a donné un coup de main (et là c'est bien mieux !):
>>> liste_notes = [] >>> pat = re.compile('^(\w+), (\D+) ([0-9]+\..*\/[0-9]+)') >>> for parc_data in li: ... classe, nom, notes = pat.match(parc_data).groups() ... liste_notes.append([classe, nom, map(lambda n: tuple(n.split('/')), notes.split())])
Les données récupérées:
>>> liste_notes [['3eA', 'Dupont Juliette', [('3.5', '5.0'), ('27.5', '30.0'), ('6.5', '10')]], ['3eA', 'Pop Iggy', [('2.5', '5.0'), ('21.0', '30.0'), ('6.0', '10')]]]
Personnellement je veux ces notes et barèmes sous forme de float, je l'ai donc fait avec cette comprehension list:
>>> data_notes = [[classe, nom, [(float(a), float(b)) for (a,b) in notes]] for classe, nom, notes in liste_notes]
Et voilà ce que je récupère (exactement ce que je voulais):
>>> data_notes [['3eA', 'Dupont Juliette', [(3.5, 5.0), (27.5, 30.0), (6.5, 10.0)]], ['3eA', 'Pop Iggy', [(2.5, 5.0), (21.0, 30.0), (6.0, 10.0)]]]
a+
ekdm
Messages postés
195
Date d'inscription
dimanche 13 mai 2012
Statut
Contributeur
Dernière intervention
28 août 2012
38
15 juil. 2012 à 12:18
15 juil. 2012 à 12:18
Oups pardon, j'aurais du mettre le résolu moi-même.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
15 juil. 2012 à 12:53
15 juil. 2012 à 12:53
Aucun problème. Merci à toi d'avoir pris le temps de poster la réponse.