Bonjour,
je cherche à developper un script qui permet de supprimer dans un fichier texte tous les caractères présents apres la 6eme virgule de chaque ligne.
Quelqu un pourrait il m aider?
Merci
Bonjour,
je cherche à developper un script qui permet de supprimer dans un fichier texte tous les caractères présents apres la 6eme virgule de chaque ligne.
Quelqu un pourrait il m aider?
Merci
tu lit ton fichier ligne à ligne et à chaque ligne tu fais une regex.
tu print tout ça dans un fichier temporaire que tu renomme par la suite et voilà
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Merci pour ta reponse
je lis les lignes une a une mais je ne connais rien aux expressiosn regulieres, et ca m a l air un brin compliqué...
lis un peu la FAQ et essaye quelque chose pour qu'on puisse t'aider
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Alors en fait pour etre clair,
j ai un fichier txt de la forme
en fait je souhaiterai supprimer les derniers champs comme suit: ,"","test""jhjhkj","ljhjkkj",'mjlklk","lkhlh","lkhlh","","!test"
Mon probleme est que j arrive a supprimer test mais je n arrive pas a supprimer les virgules et les guillemets.
En fait je cherche une expression qui permettrait de supprimer tous ces caracteres d'un coup.
voila pour l instant mon script ( tres pauvre.....)
et si je remplace la ligne suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 open FICHIER,"< testperl.txt" or die "Le fichier n'existe pas !"; while ($ligne = <FICHIER>){ print $ligne; $ligne =~ s/\btest\b//; print $ligne; } close FICHIER;par
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ligne =~ s/\btest\b//;
ca ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ligne =~ s/\b,"","test"\b//;
Comment donc faire rentrer cette expression ??
Merci
mon fichier txt comporte evidemment plusieurs lignes, toutes du mm format.
je resume :
tu as un fichier de ce type :
et tu voudrais au final ceci :"col1","col2",'col3","col4","col5","col6","!test"
c'est ça?"col1","col2",'col3","col4","col5","col6"
ou bien :
???col1 col2 col3 col4 col5 col6
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
oui
mon fichier comporte plusieurs lignes qui sont toutes de la forme
"col1","col2","col3","col4","col5","col6","","col8"
Le plus simple aurait été de balayer chaque ligne et de tout supprimer a partir de la 6 eme virgule (comprise)
mais je bloque et je ne sais par ou commencer pour chercher.
Ma solution a donc été de supprimer dans chaque ligne les 2 dernieres colonnes, sachant qu'elles sont toutes de la forme :,"","TEST" ou ,"0","TEST".
J'espere avoir été clair....
Merci pour ton aide
test ça, j'ai pas testé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 open (FICHIER,"testperl.txt") or die "Le fichier n'existe pas !"; while (my $ligne = <FICHIER>){ my @toto = split(",", $ligne); for (my $i=6;$i<scalar(@toto);$i++){ $ligne .= $toto[$i]; } print "$ligne\n"; $ligne = ""; } close (FICHIER);
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
ou en optimisant un peu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 open (FICHIER, '<', 'testperl.txt') or die "Le fichier n'existe pas !"; while (my $ligne = <FICHIER>){ my @toto = split(/,/, $ligne); print( join ( ',' , @toto[0..5] ) . "\n"); } close (FICHIER);
Je ne répond à aucune question technique par MP.
Si votre problème est réglé, n'oubliez pas Dans tous les cas
tu devrais expliquer ton code, car pour les debutants, c'est pas expliqué dans les docs ce genre d'ecriture :Envoyé par MarneusCalgarXP
et ils seront perdus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 print( join ( ',' , @toto[0..5] ) . "\n"); @toto[0..5]
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Effectivement, @toto[0..5] renvoie une portion du tableau toto contenant les éléments d'indice 0 à 5, soit les 6 premiers éléments.Envoyé par djibril
join va coller tous les éléments du tableau passé en paramètre avec le séparateur fourni afin de générer une chaine de caractères.
Par contre, dans la solution que tu as posté, tu as fait une toute pitite erreur, tu as fait commencer la boucle à l'indice 6, jusqu'à la fin de la ligne, du coup tu récupères justement la partie qu'il veut éliminer !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (my $i=6;$i<scalar(@toto);$i++){ # à remplacer par for (my $i=0;$i < 6;$i++){
Je ne répond à aucune question technique par MP.
Si votre problème est réglé, n'oubliez pas Dans tous les cas
Merci beaucoup a vous pour vos reponses.
J'avais en fait trouvé une autre solution(apres avoir bien galeré... ):
open FD,"< test.dat" or die "Le fichier n'existe pas !";
open OUT,"> output.dat";
while (<FD>)
{
if (/^(.+),[^,]+,[^,]+$/)
{print OUT "$1\n";
}
}
close FD;
close OUT;
En tout cas encore merci a vous!!!!!
pense à mettre ton code entre balise code pour la lisibilité. Et si ton probleme est résolu, met un tag résolu.
Merci
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager