Programme qui ne laisse qu'un seul mot par ligne
Résolu
artagon7
Messages postés
417
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je travaille avec des fichiers de format texte (UTF-8) qui contiennent, pour la moitié des lignes environ, un seul mot par ligne.
Pour les autres lignes, j’ai ajouté des lettres ou des annotations à la fin.
Aussi, je me suis aperçu, que certaines lignes contiennent un ou deux espacements à la fin.
Je voudrais simplement obtenir un fichier qui ne contienne :
1) qu’un seul mot (le premier) par ligne;
2) et sans espacement à la fin des lignes.
Voici un exemple :
Fichier d’entrée
bateau*
belle
bicyclette N
bien adverbe adj N
bord**
Note : L’astérisque indique, ici, un espacement en fin de ligne.
Fichier de sortie
bateau
belle
bicyclette
bien
bord
Si les fichiers ne comportaient qu’une dizaine de lignes, je le ferais à la main mais ils peuvent contenir plus de 1000 lignes.
Merci
Je travaille avec des fichiers de format texte (UTF-8) qui contiennent, pour la moitié des lignes environ, un seul mot par ligne.
Pour les autres lignes, j’ai ajouté des lettres ou des annotations à la fin.
Aussi, je me suis aperçu, que certaines lignes contiennent un ou deux espacements à la fin.
Je voudrais simplement obtenir un fichier qui ne contienne :
1) qu’un seul mot (le premier) par ligne;
2) et sans espacement à la fin des lignes.
Voici un exemple :
Fichier d’entrée
bateau*
belle
bicyclette N
bien adverbe adj N
bord**
Note : L’astérisque indique, ici, un espacement en fin de ligne.
Fichier de sortie
bateau
belle
bicyclette
bien
bord
Si les fichiers ne comportaient qu’une dizaine de lignes, je le ferais à la main mais ils peuvent contenir plus de 1000 lignes.
Merci
A voir également:
- Programme qui ne laisse qu'un seul mot par ligne
- Partager photos en ligne - Guide
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Mètre en ligne - Guide
1 réponse
Bonjour artagon7,
Pour chaque ligne, la regexp
Les caractères "blancs" sont non seulement les espaces, mais aussi les tabulations et retours à la ligne.
Donc pour générer le fichier de sortie, tu enverras vers le fichier modifié
Si tu es sous Linux, au lieu de faire cela avec Perl, tu peux faire aussi cela en ligne de commande avec GNU
Autrement, personnellement, je fais ce genre de manipulations avec l'éditeur
Dal
Pour chaque ligne, la regexp
/^([^\s]+)/va capturer en
$1:
- à partir du début de la ligne
- un ou plusieurs caractères
- jusqu'à ce qu'elle rencontre un caractère "blanc" (non inclus)
Les caractères "blancs" sont non seulement les espaces, mais aussi les tabulations et retours à la ligne.
Donc pour générer le fichier de sortie, tu enverras vers le fichier modifié
"$1\n"pour rajouter le retour à la ligne, puisqu'il ne sera pas capturé par la regexp.
Si tu es sous Linux, au lieu de faire cela avec Perl, tu peux faire aussi cela en ligne de commande avec GNU
sedet l'option
-ipour modifier le fichier "sur place" ("i" pour "in place") sans avoir à créer un fichier temporaire.
Autrement, personnellement, je fais ce genre de manipulations avec l'éditeur
vimquant il n'y a pas trop de fichiers à traiter.
Dal
Je vais écrire quelque chose avec ce que tu as expliqué.
J'ai écrit le programme Perl ci-dessous et ça a fonctionné.
Je préfère l'écrire en Perl car dans mon vrai programme, il y aura ouverture de plusieurs fichiers pour une seule exécution du programme.
Quand je vais avoir du temps, je vais essayer avec sed. Je suis curieux de voir la procédure. J'ai déjà utilisé sed dans le passé.
Merci beaucoup