Création
d'entreprise
Posez votre question Signaler

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

phoenix1984 30Messages postés 22 novembre 2007Date d'inscription 9 décembre 2011Dernière intervention - Dernière réponse le 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 ! :)
Lire la suite 

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

3 réponses
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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



Ajouter un commentaire
Ce document intitulé « [Perl] Split d'une chaine de caractères » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?