Spécialiste des expressions régulières
Résolu
ekdm
Messages postés
209
Statut
Contributeur
-
lionhell454 Messages postés 13761 Date d'inscription Statut Contributeur Dernière intervention -
lionhell454 Messages postés 13761 Date d'inscription Statut Contributeur Dernière intervention -
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+
--
http://ekd.tuxfamily.org
https://ekdm.wordpress.com/
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+
--
http://ekd.tuxfamily.org
https://ekdm.wordpress.com/
A voir également:
- Spécialiste des expressions régulières
- Tableau des caractères spéciaux - Guide
- Caractères spéciaux : comment taper des |—[©\½→}… - Guide
- Mon imprimante imprime des caractères spéciaux epson ✓ - Forum MacOS
- Existe-t-il de bons smartphones équipés d'android d'origine et bénéficiant de mises à jour régulières - Guide
- SED et le expressions régulières ✓ - Forum Linux / Unix
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+