extraire contenu entre différents items
Posté : mer. 13 févr. 2019 21:41
Bonsoir à tous,
je cherche à finaliser mon code pour extraire grace à autoit les données d'un unique fichier texte.
voila comment est constitué le fichier texte :
c'est une liste constituée de plusieurs catégories.
Chaque catégorie est nommée entre crochets et il n'y a pas de cohérence entre les noms
en dessous de cette categorie, il y a des noms de fichiers les uns en dessous des autres.
exemple:
fichier catégories.txt :
[blabla1]
1
2
3
[coucou2]
4
5
6
[hello]
8
9
la donnée dans une categorie peut se retrouver dans une autre, il peut y avoir des doublons mais ce sont des catégories uniques.
grace à stringbetween, j'arrive à extraire toutes les categories entre crochets et donc j'arrive bien à :
=>faire un fichier texte qui liste toutes les catégories (ca c'est un premier point que je voulais)
=>creer un fichier texte dont le nom est celui de chaque catégorie (ca c'est un point aussi que je voulais MAIS:
=>je ne sait pas comment mettre à l'intérieur de chaque fichier le contenu
il faudrait creer un fichier :
blabla1.txt qui se présente ainsi :
a
2
3
un fichier coucou2.txt qui se présente ainsi
4
5
6
etc.
une sorte de stringbetween lui meme dans un stringbetween ?
ou alors lire le resultat dans un tableau (ca c'est déja codé) et faire une recherche jusqu'au prochain caractere "[" qui est la catégorie suivante ?
voici ci-dessous mon code actuel
merci de vos idées.
je cherche à finaliser mon code pour extraire grace à autoit les données d'un unique fichier texte.
voila comment est constitué le fichier texte :
c'est une liste constituée de plusieurs catégories.
Chaque catégorie est nommée entre crochets et il n'y a pas de cohérence entre les noms
en dessous de cette categorie, il y a des noms de fichiers les uns en dessous des autres.
exemple:
fichier catégories.txt :
[blabla1]
1
2
3
[coucou2]
4
5
6
[hello]
8
9
la donnée dans une categorie peut se retrouver dans une autre, il peut y avoir des doublons mais ce sont des catégories uniques.
grace à stringbetween, j'arrive à extraire toutes les categories entre crochets et donc j'arrive bien à :
=>faire un fichier texte qui liste toutes les catégories (ca c'est un premier point que je voulais)
=>creer un fichier texte dont le nom est celui de chaque catégorie (ca c'est un point aussi que je voulais MAIS:
=>je ne sait pas comment mettre à l'intérieur de chaque fichier le contenu
il faudrait creer un fichier :
blabla1.txt qui se présente ainsi :
a
2
3
un fichier coucou2.txt qui se présente ainsi
4
5
6
etc.
une sorte de stringbetween lui meme dans un stringbetween ?
ou alors lire le resultat dans un tableau (ca c'est déja codé) et faire une recherche jusqu'au prochain caractere "[" qui est la catégorie suivante ?
voici ci-dessous mon code actuel
merci de vos idées.
#include <File.au3>
#Include <Array.au3>
#include <StringConstants.au3>
#include <String.au3>
Local $sfichieratrier, $afichieratrier,$aTRI,$sFile,$sString
; Sélection du fichier à filtrer.
$sfichieratrier = FileOpenDialog("Sélectionnez le fichier à filtrer", @WorkingDir & "\", "txt (*.txt)", $FD_FILEMUSTEXIST)
If @error Then
MsgBox($MB_SYSTEMMODAL, "", "Aucun fichier sélectionné.")
Exit
EndIf
; Transformation du résultat en tableau.
$afichieratrier = FileReadToArray($sfichieratrier)
;essai
MsgBox($MB_SYSTEMMODAL,"Affiche tout en tableau",fileread($sfichieratrier))
;ne garde que ce qui est entre crochets
Local $aTRI=_StringBetween(FileRead($sfichieratrier),"[","]")
_ArrayDisplay ($aTRI,"Affiche les catégories")
;ubound donne le nombre de lignes total mais les données commencent à zero
;je fais de 0 à total-1 en ajoutant 1
for $i = 0 to UBound($aTRI)-1 step +1
MsgBox($MB_SYSTEMMODAL,"test","voici le contenu de la ligne " & $i & $aTRI[$i] )
next
;sauvegarder le listing des categories dans 1 fichier unique
$sFile = FileSaveDialog("Enregistrer sous...", @ScriptDir, "Text Files (*.txt) | ini Files (*.ini) | All Files (*.*)", 18, "")
If @error Then Exit
$sString = _ArrayToString($aTRI , @crlf, Default, Default, @CRLF)
FileWrite($sFile, $sString)
;Crée automatiquement 1 fichier texte avec le nom de chaque categorie
;pour l'instant comme contenu toutes les categories mais il faudrait arriver à trier/filtrer les données entre chaque categorie
for $i = 0 to UBound($aTRI)-1 step +1
$file=fileopen($aTRI[$i] &".txt",1)
FileWrite($file,$aTRI[$i])
Next
MsgBox($MB_SYSTEMMODAL,"resultat", UBound($aTRI) & "fichiers crées..." )
#Include <Array.au3>
#include <StringConstants.au3>
#include <String.au3>
Local $sfichieratrier, $afichieratrier,$aTRI,$sFile,$sString
; Sélection du fichier à filtrer.
$sfichieratrier = FileOpenDialog("Sélectionnez le fichier à filtrer", @WorkingDir & "\", "txt (*.txt)", $FD_FILEMUSTEXIST)
If @error Then
MsgBox($MB_SYSTEMMODAL, "", "Aucun fichier sélectionné.")
Exit
EndIf
; Transformation du résultat en tableau.
$afichieratrier = FileReadToArray($sfichieratrier)
;essai
MsgBox($MB_SYSTEMMODAL,"Affiche tout en tableau",fileread($sfichieratrier))
;ne garde que ce qui est entre crochets
Local $aTRI=_StringBetween(FileRead($sfichieratrier),"[","]")
_ArrayDisplay ($aTRI,"Affiche les catégories")
;ubound donne le nombre de lignes total mais les données commencent à zero
;je fais de 0 à total-1 en ajoutant 1
for $i = 0 to UBound($aTRI)-1 step +1
MsgBox($MB_SYSTEMMODAL,"test","voici le contenu de la ligne " & $i & $aTRI[$i] )
next
;sauvegarder le listing des categories dans 1 fichier unique
$sFile = FileSaveDialog("Enregistrer sous...", @ScriptDir, "Text Files (*.txt) | ini Files (*.ini) | All Files (*.*)", 18, "")
If @error Then Exit
$sString = _ArrayToString($aTRI , @crlf, Default, Default, @CRLF)
FileWrite($sFile, $sString)
;Crée automatiquement 1 fichier texte avec le nom de chaque categorie
;pour l'instant comme contenu toutes les categories mais il faudrait arriver à trier/filtrer les données entre chaque categorie
for $i = 0 to UBound($aTRI)-1 step +1
$file=fileopen($aTRI[$i] &".txt",1)
FileWrite($file,$aTRI[$i])
Next
MsgBox($MB_SYSTEMMODAL,"resultat", UBound($aTRI) & "fichiers crées..." )