[Perl] Split d'une chaine de caractères
phoenix1984
Messages postés
30
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
Je cherche à extraire des valeurs numériques d'un texte. Ces valeurs numériques sont disséminés dans le texte, et varient.
Exemple de texte:
test.log
chapitre1
blablablablablabla
blabla 28 blabla
blablablablablabla
chapritre2
blablablablablabla
blabla 85 blabla
blablablablablabla
chapritre2
blablablablablabla
blabla 44 blabla
blablablablablabla
Ici, il faudrait chercher la section "chapitre1" et récupérer la PREMIERE valeur numérique dans le texte qui suit, et faire de même pour chaque "chapitre" rencontré ...
j'ai fait un petit essaie avec "split" mais sans réel succès ..
D'avance merci ! :)
Je cherche à extraire des valeurs numériques d'un texte. Ces valeurs numériques sont disséminés dans le texte, et varient.
Exemple de texte:
test.log
chapitre1
blablablablablabla
blabla 28 blabla
blablablablablabla
chapritre2
blablablablablabla
blabla 85 blabla
blablablablablabla
chapritre2
blablablablablabla
blabla 44 blabla
blablablablablabla
Ici, il faudrait chercher la section "chapitre1" et récupérer la PREMIERE valeur numérique dans le texte qui suit, et faire de même pour chaque "chapitre" rencontré ...
j'ai fait un petit essaie avec "split" mais sans réel succès ..
#!/usr/bin/perl -i.orig use strict; use warnings; my @table = (test.log); my @table = split(/[a-z]/g,$test); print "$table[0]\n"; print "$table[1]\n"; print "$table[2]\n";
D'avance merci ! :)
A voir également:
- [Perl] Split d'une chaine de caractères
- Split cam - Télécharger - Messagerie
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
3 réponses
Salut,
Je n'ai pas compris.
Peut tu donner un exemple concret.
Donc un exemple de ton fichier réel et aussi ce que tu veux obtenir comme résultat.
Merci.
Je n'ai pas compris.
Peut tu donner un exemple concret.
Donc un exemple de ton fichier réel et aussi ce que tu veux obtenir comme résultat.
Merci.
Salut Lami20j :)
Petit extrait de la page web avec ses balises xml ..
Je récupère la page web dans un fichier. L'objectif est ensuite de la parcourir pour en retirer 2 infos :
"slot-x" et la valeur "level" associée ... Donc ici, implémenter un fichier avec :
slot-1, level 378
slot-2, level 346
...
..
.
Le nombre de slot est déternimé, mais il faudrait récupérer la valeur level à chaque fois.
Merci pour ton aide en tout cas en espérant avoir été un peu plus clair ..
Phoenix
Petit extrait de la page web avec ses balises xml ..
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr"> <div data-id="0" data-type="1" class="slot slot-1 item-quality-4" style=" left: 0px; top: 0px;"><span class="level">378</span></div> <div data-id="1" data-type="2" class="slot slot-2 item-quality-3" style=" left: 0px; top: 58px;"><span class="level">346</span></div> </html>
Je récupère la page web dans un fichier. L'objectif est ensuite de la parcourir pour en retirer 2 infos :
"slot-x" et la valeur "level" associée ... Donc ici, implémenter un fichier avec :
slot-1, level 378
slot-2, level 346
...
..
.
Le nombre de slot est déternimé, mais il faudrait récupérer la valeur level à chaque fois.
Merci pour ton aide en tout cas en espérant avoir été un peu plus clair ..
Phoenix
Salut,
Voici un exemple
Exécution de script
Voici un exemple
:~/perl$ cat slot.txt <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr"> <div data-id="0" data-type="1" class="slot slot-1 item-quality-4" style=" left: 0px; top: 0px;"><span class="level">378</span></div> <div data-id="1" data-type="2" class="slot slot-2 item-quality-3" style=" left: 0px; top: 58px;"><span class="level">346</span></div> </html> :~/perl$ cat slot.pl #!/usr/bin/perl use strict;use warnings; open F,"slot.txt" or die "E/S : $!\n"; my %h; while(<F>){ next unless /class\s*=\s*"slot\s*(slot-\d+).*"(level)">(\d+)\s*.*/; $h{$1}="$2 $3"; } print "$_, $h{$_}\n" for sort keys %h; __END__
Exécution de script
:~/perl$ perl slot.pl slot-1, level 378 slot-2, level 346