Spécialiste des expressions régulières
Résolu
ekdm
Messages postés
195
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Salut à tous,
Je voudrais savoir s'il y a un spécialiste des expressions régulières ici (et en particulier sous Python). J'ai des question à lui poser ...
a+
Je voudrais savoir s'il y a un spécialiste des expressions régulières ici (et en particulier sous Python). J'ai des question à lui poser ...
a+
A voir également:
- Spécialiste des expressions régulières
- Liste des caractères spéciaux - Guide
- Excel 2010 expressions régulières ✓ - Forum Excel
- Comment faire des ecriture special sur instagram - Guide
- Expressions régulières "ne contient pas ..." ✓ - Forum Programmation
- Comment faire des effets spéciaux ✓ - Forum Graphisme
2 réponses
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.
> 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+