J'ai un souci avec un script pour extraire un texte de X jusqu=E0 Y.
Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> =E0
</html> Notez au passage que ce pourait =EAtre d'autres tags ou des mots
tout simplement de toto =E0 titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par
contre le mot de $fin (</html>)est toujours faux. En r=E9sum=E9 le script
n'extrait pas de <body> =E0 </html> mais de <body> =E0 ??? bien avant la
fin de la page.
En r=E9sum=E9 n'y a t'il pas moyen d'extraire un texte de X =E0 Y ?
Dans le cas pr=E9sent c'est comme si le (length $depart;) jouait un
r=F4le dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une
solution.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Damien GUERIN
Moi je ferais plutot :
$depart = "<body>"; $fin = "</html>"; $debut_trouve=0; open(FILE, "fichier.html") || die "I can't read that filen"; while (my $ligne=<FILE>) { if ($ligne = ~ /E$departq/ ) { $debut_trouve=1; } elsif ($ligne = ~ /E$finq/ ) { last; } elsif ($debut_trouve) { print $ligne; } } close(FILE);
"Crayos" a écrit dans le message de news:
Bonjour à tous,
J'ai un souci avec un script pour extraire un texte de X jusquà Y. Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> à </html> Notez au passage que ce pourait être d'autres tags ou des mots tout simplement de toto à titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par contre le mot de $fin (</html>)est toujours faux. En résumé le script n'extrait pas de <body> à </html> mais de <body> à ??? bien avant la fin de la page. En résumé n'y a t'il pas moyen d'extraire un texte de X à Y ?
Dans le cas présent c'est comme si le (length $depart;) jouait un rôle dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une solution.
Pouvez-vous m'aider.
Cordialement
Moi je ferais plutot :
$depart = "<body>";
$fin = "</html>";
$debut_trouve=0;
open(FILE, "fichier.html") || die "I can't read that filen";
while (my $ligne=<FILE>) {
if ($ligne = ~ /E$departq/ ) {
$debut_trouve=1;
} elsif ($ligne = ~ /E$finq/ ) {
last;
} elsif ($debut_trouve) {
print $ligne;
}
}
close(FILE);
"Crayos" <admin@officiel.ch> a écrit dans le message de news:
1128158378.988012.286210@g49g2000cwa.googlegroups.com...
Bonjour à tous,
J'ai un souci avec un script pour extraire un texte de X jusquà Y.
Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> à
</html> Notez au passage que ce pourait être d'autres tags ou des mots
tout simplement de toto à titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par
contre le mot de $fin (</html>)est toujours faux. En résumé le script
n'extrait pas de <body> à </html> mais de <body> à ??? bien avant la
fin de la page.
En résumé n'y a t'il pas moyen d'extraire un texte de X à Y ?
Dans le cas présent c'est comme si le (length $depart;) jouait un
rôle dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une
solution.
$depart = "<body>"; $fin = "</html>"; $debut_trouve=0; open(FILE, "fichier.html") || die "I can't read that filen"; while (my $ligne=<FILE>) { if ($ligne = ~ /E$departq/ ) { $debut_trouve=1; } elsif ($ligne = ~ /E$finq/ ) { last; } elsif ($debut_trouve) { print $ligne; } } close(FILE);
"Crayos" a écrit dans le message de news:
Bonjour à tous,
J'ai un souci avec un script pour extraire un texte de X jusquà Y. Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> à </html> Notez au passage que ce pourait être d'autres tags ou des mots tout simplement de toto à titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par contre le mot de $fin (</html>)est toujours faux. En résumé le script n'extrait pas de <body> à </html> mais de <body> à ??? bien avant la fin de la page. En résumé n'y a t'il pas moyen d'extraire un texte de X à Y ?
Dans le cas présent c'est comme si le (length $depart;) jouait un rôle dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une solution.
Pouvez-vous m'aider.
Cordialement
Crayos
Merci mais le script que vous m'avez donné ne fonctionne malheureusement pas. Meilleures salutations
Merci mais le script que vous m'avez donné ne fonctionne
malheureusement pas. Meilleures salutations
Merci mais le script que vous m'avez donné ne fonctionne malheureusement pas. Meilleures salutations
CB
Crayos wrote:
Donc je souhaite extraire un bout d'un texte html soit de <body> à </html> Notez au passage que ce pourait être d'autres tags ou des mots tout simplement de toto à titi.
Avec File::Slurp, je charge la totalité du fichier dans un scalaire, puis supprime les marques de fin de lignes avec une regexp. Ensuite, il est facile de faire ce que l'on veut sur la chaîne restante.
Mais ce n'est pas beau, pas portable, c'est gourmand en ressources...
CB.
Crayos wrote:
Donc je souhaite extraire un bout d'un texte html soit de <body> à
</html> Notez au passage que ce pourait être d'autres tags ou des mots
tout simplement de toto à titi.
Avec File::Slurp, je charge la totalité du fichier dans un scalaire,
puis supprime les marques de fin de lignes avec une regexp.
Ensuite, il est facile de faire ce que l'on veut sur la chaîne restante.
Mais ce n'est pas beau, pas portable, c'est gourmand en ressources...
Donc je souhaite extraire un bout d'un texte html soit de <body> à </html> Notez au passage que ce pourait être d'autres tags ou des mots tout simplement de toto à titi.
Avec File::Slurp, je charge la totalité du fichier dans un scalaire, puis supprime les marques de fin de lignes avec une regexp. Ensuite, il est facile de faire ce que l'on veut sur la chaîne restante.
Mais ce n'est pas beau, pas portable, c'est gourmand en ressources...
Pour moi, cela marche bien en tout cas. J'aurais bien sûr des problèmes s'il fallait reconstruire le fichier d'origine, avec les sauts de lignes où il faut... Mais puisque ce n'est pas nécessaire.
CB
Le_T wrote:
$seq =~ s/W//g; supprime les non alphanumériques
Cela risque de dégager aussi les <, > ...
ensuite hum...
$seq =~ m/(<body>)(.+)(</html>)/i;
print $2;
Pourquoi ne pas essayer?
Pour moi, cela marche bien en tout cas.
J'aurais bien sûr des problèmes s'il fallait reconstruire le fichier
d'origine, avec les sauts de lignes où il faut...
Mais puisque ce n'est pas nécessaire.
Pour moi, cela marche bien en tout cas. J'aurais bien sûr des problèmes s'il fallait reconstruire le fichier d'origine, avec les sauts de lignes où il faut... Mais puisque ce n'est pas nécessaire.
CB
Le_T
Alors dans ce cas on ne supprime pas les caractères, on ne fait qu'un match... d'ailleurs il est meme possible que ca fonctionne en gardant les sauts de ligne... a essayer
Alors dans ce cas on ne supprime pas les caractères, on ne fait qu'un
match... d'ailleurs il est meme possible que ca fonctionne en gardant
les sauts de ligne... a essayer
Alors dans ce cas on ne supprime pas les caractères, on ne fait qu'un match... d'ailleurs il est meme possible que ca fonctionne en gardant les sauts de ligne... a essayer
ZigZag15551
Le problème c'est ta variable $fin dans $Texte_voulu qui devrais être $file_fin la référence à la position et non la celle du tag recherché.
################################ "Crayos" a écrit dans le message de news:
Bonjour à tous,
J'ai un souci avec un script pour extraire un texte de X jusquà Y. Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> à </html> Notez au passage que ce pourait être d'autres tags ou des mots tout simplement de toto à titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par contre le mot de $fin (</html>)est toujours faux. En résumé le script n'extrait pas de <body> à </html> mais de <body> à ??? bien avant la fin de la page. En résumé n'y a t'il pas moyen d'extraire un texte de X à Y ?
Dans le cas présent c'est comme si le (length $depart;) jouait un rôle dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une solution.
Pouvez-vous m'aider.
Cordialement
##############################
Le problème c'est ta variable $fin dans $Texte_voulu qui devrais être
$file_fin la référence à la position et non la celle du tag recherché.
################################
"Crayos" <admin@officiel.ch> a écrit dans le message de news:
1128158378.988012.286210@g49g2000cwa.googlegroups.com...
Bonjour à tous,
J'ai un souci avec un script pour extraire un texte de X jusquà Y.
Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> à
</html> Notez au passage que ce pourait être d'autres tags ou des mots
tout simplement de toto à titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par
contre le mot de $fin (</html>)est toujours faux. En résumé le script
n'extrait pas de <body> à </html> mais de <body> à ??? bien avant la
fin de la page.
En résumé n'y a t'il pas moyen d'extraire un texte de X à Y ?
Dans le cas présent c'est comme si le (length $depart;) jouait un
rôle dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une
solution.
################################ "Crayos" a écrit dans le message de news:
Bonjour à tous,
J'ai un souci avec un script pour extraire un texte de X jusquà Y. Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> à </html> Notez au passage que ce pourait être d'autres tags ou des mots tout simplement de toto à titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par contre le mot de $fin (</html>)est toujours faux. En résumé le script n'extrait pas de <body> à </html> mais de <body> à ??? bien avant la fin de la page. En résumé n'y a t'il pas moyen d'extraire un texte de X à Y ?
Dans le cas présent c'est comme si le (length $depart;) jouait un rôle dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une solution.
Pouvez-vous m'aider.
Cordialement
##############################
DoMinix
Crayos wrote:
Bonjour à tous,
J'ai un souci avec un script pour extraire un texte de X jusquà Y. Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> à </html> Notez au passage que ce pourait être d'autres tags ou des mots tout simplement de toto à titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par contre le mot de $fin (</html>)est toujours faux. En résumé le script n'extrait pas de <body> à </html> mais de <body> à ??? bien avant la fin de la page. En résumé n'y a t'il pas moyen d'extraire un texte de X à Y ?
Dans le cas présent c'est comme si le (length $depart;) jouait un rôle dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une solution.
Pouvez-vous m'aider.
Cordialement
perl -n0777le 'print $1 if m{<body>(.*)</html>}is' fichier.html
ça marche pour moi :)
-- dominix
Crayos wrote:
Bonjour à tous,
J'ai un souci avec un script pour extraire un texte de X jusquà Y.
Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> à
</html> Notez au passage que ce pourait être d'autres tags ou des mots
tout simplement de toto à titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par
contre le mot de $fin (</html>)est toujours faux. En résumé le script
n'extrait pas de <body> à </html> mais de <body> à ??? bien avant la
fin de la page.
En résumé n'y a t'il pas moyen d'extraire un texte de X à Y ?
Dans le cas présent c'est comme si le (length $depart;) jouait un
rôle dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une
solution.
Pouvez-vous m'aider.
Cordialement
Ger@ld
perl -n0777le 'print $1 if m{<body>(.*)</html>}is' fichier.html
J'ai un souci avec un script pour extraire un texte de X jusquà Y. Pour faciliter ma question je vais utiliser un exemple de texte html
Donc je souhaite extraire un bout d'un texte html soit de <body> à </html> Notez au passage que ce pourait être d'autres tags ou des mots tout simplement de toto à titi.
Si le premier mot de $depart (<body>)est extrait au bon endroit, par contre le mot de $fin (</html>)est toujours faux. En résumé le script n'extrait pas de <body> à </html> mais de <body> à ??? bien avant la fin de la page. En résumé n'y a t'il pas moyen d'extraire un texte de X à Y ?
Dans le cas présent c'est comme si le (length $depart;) jouait un rôle dans la longeur du texte_voulu.
J'ai parcouru toutes les archives fr.comp.lang.perl. sans touver une solution.
Pouvez-vous m'aider.
Cordialement
perl -n0777le 'print $1 if m{<body>(.*)</html>}is' fichier.html