Merci d'avance
[R] Supprimer une chaine de caractere dans fichier txt
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Supprimer une chaine de caractere dans fichier txt
Salut, pouvez-vous m'éclairer, j'aimerais connaitre le code qui recherche et supprime toutes les chaines de caractères ne terminant pas par "/test" à chaque fin de ligne d'un fichier txt.
Merci d'avance
Merci d'avance
Modifié en dernier par sambalec le dim. 22 févr. 2009 12:41, modifié 1 fois.
- jbnh
- Niveau 11

- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [..]Supprimer une chaine de caractere dans fic
Salut :
Marche avec un txt de cette sorte :
Code : Tout sélectionner
#include <string.au3>
;------------------------------------------------
$filename = 'test.txt'
;------------------------------------------------
$file = FileOpen($filename, 0)
$read = FileRead($file)
$line = StringSplit($read, @CR)
For $i = 1 To $line[0]
$var = FileReadLine($file, $i)
$newline = StringRight($var, 5)
If $newline <> "/test" Then
Filewrite("sortie.txt", $var & @CRLF)
Endif
Next
FileClose($filename)
a /test
b
a/test
bb
a /test
cdcd
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
- FernandG
- Membre émérite

- Messages : 194
- Enregistré le : mar. 15 avr. 2008 21:50
- Localisation : Picardie
- Status : Hors ligne
Re: [..]Supprimer une chaine de caractere dans fichier txt
Bonjour,
Tu peux regarder ici : http://www.autoitscript.fr/forum/viewto ... f=3&t=2420, regarde la réponse de Tlem et tu auras début de réponse.
Le but est d'utiliser la fonction _ReplaceStringInFile pour remplacer tes "/test" par rien : "".
A toi maintenant de compléter avec les vérifications de présence du fichier et d'ouverture. Regarde la doc car l'exemple est parfait.
Sinon dans le même registre mais un peu plus long, tu as la commande StringReplace associé à celle de FileReadLine. Toiut dépend de ton usage et besoin.
Bonne journée.
AutoITement.
P.S. : Désolé "jbnh", j'ai pas vu que tu avais déjà posté une réponse. De plus, j'ai pris le temps de répondre (taf oblige).
Tu peux regarder ici : http://www.autoitscript.fr/forum/viewto ... f=3&t=2420, regarde la réponse de Tlem et tu auras début de réponse.
Le but est d'utiliser la fonction _ReplaceStringInFile pour remplacer tes "/test" par rien : "".
Code : Tout sélectionner
#include <file.au3>
Dim $find = "/test", $remplace = "", $i, $text
$filename = @DesktopDir & "\Test.txt"
_ReplaceStringInFile($filename, $find, $remplace)
Exit
Sinon dans le même registre mais un peu plus long, tu as la commande StringReplace associé à celle de FileReadLine. Toiut dépend de ton usage et besoin.
Bonne journée.
AutoITement.
P.S. : Désolé "jbnh", j'ai pas vu que tu avais déjà posté une réponse. De plus, j'ai pris le temps de répondre (taf oblige).
Re: [..]Supprimer une chaine de caractere dans fichier txt
Merci à vous deux ! donc j'ai essayé le code de la première réponse ca a l'air fonctionnel mais pas pour des chaines de caractères un peu plus complexes comme celle-ci dans mon "test.txt" :
et donc en utilisant le code que tu m'a donné comme tel :
Apres execution du script, mon fichier sortie.txt m'affiche les même lignes que test.txt 
Code : Tout sélectionner
http://samba.lec.com/test/
http://samba2.lec.com/small.79326142.jpg?53238431
http://samba3.lec.com/small.83622546.jpg?57299131
http://samba4.lec.com/test/
http://samba5.lec.com/test/
http://samba6.lec.com/small.64194503.jpg?49003986
Code : Tout sélectionner
#include <string.au3>
#include <file.au3>
;------------------------------------------------
$filename = 'test.txt'
;------------------------------------------------
$file = FileOpen($filename, 0)
$read = FileRead($file)
$line = StringSplit($read, @CR)
For $i = 1 To $line[0]
$var = FileReadLine($file, $i)
$newline = StringRight($var, 5)
If $newline <> "/test/" Then
Filewrite("sortie.txt", $var & @CRLF)
Endif
Next
FileClose($filename)
Re: [..]Supprimer une chaine de caractere dans fichier txt
Punaise, je viens de m'apercevoir que je me suis inversé dans les mots lors de ma première requête.
En fait j'aimerais ne garder que les lignes finissant par "/test/" et justement que toutes les autres soit supprimées.
En fait j'aimerais ne garder que les lignes finissant par "/test/" et justement que toutes les autres soit supprimées.
- FernandG
- Membre émérite

- Messages : 194
- Enregistré le : mar. 15 avr. 2008 21:50
- Localisation : Picardie
- Status : Hors ligne
Re: [..]Supprimer une chaine de caractere dans fichier txt
Dans ce cas et en m'appuyant un peu sur le code de jbnh, je te prosose :
Bon appétit.
AutoITement.
Code : Tout sélectionner
Dim $resultat
$fichier = @DesktopDir & "\Test.txt"
$file = FileOpen($fichier, 0)
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
If StringRegExp($line, "/test/$") Then $resultat &= $line & @CRLF
Wend
Filewrite("sortie.txt", $resultat)
FileClose($fichier)
Exit
AutoITement.
Re: [..]Supprimer une chaine de caractere dans fichier txt
Merci
, mais a priori le script ne fonctionne pas car il ne créé pas de sortie.txt 
-
ani
- Niveau 11

- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
Re: [..]Supprimer une chaine de caractere dans fichier txt
il semble qu'il faut indiquer le filewrite dans la boucle while
deviend
Code : Tout sélectionner
If StringRegExp($line, "/test/$") Then $resultat &= $line & @CRLF
Wend
Filewrite("sortie.txt", $resultat)Code : Tout sélectionner
If StringRegExp($line, "/test/$") Then $resultat &= $line & @CRLF
Filewrite("sortie.txt", $resultat)
WendRe: [..]Supprimer une chaine de caractere dans fichier txt
Oui la le fichier se créé mais il reste toujours vide et le script ne s'arrete jamais ( c'est comme ca depuis le début). Probleme dans la boucle je pense...
- FernandG
- Membre émérite

- Messages : 194
- Enregistré le : mar. 15 avr. 2008 21:50
- Localisation : Picardie
- Status : Hors ligne
Re: [..]Supprimer une chaine de caractere dans fichier txt
Peux-tu essayer ceci STP :
Je viens de vérifier à nouveau et je n'ai aucun souci, aussi bien avec le "fichier" exemple de jbnh que le tient avec les : http://samba5.lec.com/test/
Si tu intégres le FileWrite dans la boucle je te conseille plutot le code suivant :Qu'en penses-tu ani ?
Omis, mais pense aux diverses méthodes de vérifications de d'ouverture de fichier (pour le FileWrite).
Bon après midi.
AutoITement.
Code : Tout sélectionner
Dim $resultat
$fichier = @DesktopDir & "\Test.txt"
$file = FileOpen($fichier, 0)
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
If StringRegExp($line, "/test/$") Then $resultat &= $line & @CRLF
Wend
FileClose($fichier)
If FileExists(@DesktopDir & "\sortie.txt") Then FileDelete(@DesktopDir & "\sortie.txt")
Filewrite(@DesktopDir & "\sortie.txt", $resultat)
Exit Si tu intégres le FileWrite dans la boucle je te conseille plutot le code suivant :
Code : Tout sélectionner
If StringRegExp($line, "/test/$") Then Filewrite("sortie.txt", $line & @CRLF)
Wend Omis, mais pense aux diverses méthodes de vérifications de d'ouverture de fichier (pour le FileWrite).
Bon après midi.
AutoITement.
- jbnh
- Niveau 11

- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [..]Supprimer une chaine de caractere dans fic
Pourquoi ne pas tout simplement reprendre mon script et modifier :
"/test" par "/test/"
"/test" par "/test/"
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
-
ani
- Niveau 11

- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
Re: [..]Supprimer une chaine de caractere dans fichier txt
vos solutions sont okFernandG a écrit :Qu'en penses-tu ani ?
ps: j'ai répliqué sans regardé (ni testé)
- FernandG
- Membre émérite

- Messages : 194
- Enregistré le : mar. 15 avr. 2008 21:50
- Localisation : Picardie
- Status : Hors ligne
Re: [..]Supprimer une chaine de caractere dans fichier txt
Bonjour,
Exact pour le FileClose($file). Petite étourderie ...
Bonne journée.
AutoITement.
Exact pour le FileClose($file). Petite étourderie ...
Bonne journée.
AutoITement.
Re: [..]Supprimer une chaine de caractere dans fichier txt
Merci pour toutes vos réponses
! Impec

