[Perl] Split d'une chaine de caractères

Fermé
phoenix1984 Messages postés 30 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 9 décembre 2011 - 9 déc. 2011 à 14:44
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 14 déc. 2011 à 05:04
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 ..


#!/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:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
10 déc. 2011 à 20:33
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.
0
Salut Lami20j :)

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
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
14 déc. 2011 à 05:04
Salut,

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



0