[R] Trier un fichier texte un fonction taille des mots

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

[R] Trier un fichier texte un fonction taille des mots

#1

Message par pierrotm777 »

Bonjour,

Voici mon dernier problème sur le traitement d'un dictionnaire.

A partir d'un dictionnaire, je souhaite en créer 3 autre dans lesquels:
dico1.txt sera composé des mots de taille de 2 à 5 lettres
dico2.txt sera composé des mots de taille de 6 à 8 lettres
dico3.txt sera composé des mots de taille de 9 et plus .

Le tout étant trié par ordre alphabétique .

j'ai donc testé cela:

Code : Tout sélectionner

#Include <File.au3>
#include <string.au3>

$Path1 = @ScriptDir&"\dicofr.txt"
$File1 = FileOpen ($Path1,0)
$out_file1=FileOpen(@TempDir&"\tmpwork1",2)
$out_file2=FileOpen(@TempDir&"\tmpwork2",2)
$out_file3=FileOpen(@TempDir&"\tmpwork3",2)

$taille_block=500 ; on va lire / écrire par paquets de 500 lignes

While 1
    $block=""
    For $ind=1 to $taille_block
        $block&=FileReadLine($File1)&@CRLF
        $err=@error
        if $err=-1 Then ExitLoop
    Next
    $rep = StringLen($block)
        Switch $rep
            Case 2 to 5
                FileWrite($out_file1,$block)
                If $err=-1 Then ExitLoop
            Case 6 to 8
                FileWrite($out_file2,$block)
                If $err=-1 Then ExitLoop
            Case 9 to 20
                FileWrite($out_file3,$block)
                If $err=-1 Then ExitLoop
        Endswitch

WEnd

FileClose($File1)
FileClose($out_file1)
FileClose($out_file2)
FileClose($out_file3)
FileMove(@TempDir&"\tmpwork1",@ScriptDir&"\dico1.txt",1)
FileMove(@TempDir&"\tmpwork1",@ScriptDir&"\dico2.txt",1)
FileMove(@TempDir&"\tmpwork1",@ScriptDir&"\dico3.txt",1)
Décidement , le traitement de fichier ne me va pas du tout !
Modifié en dernier par pierrotm777 le ven. 26 nov. 2010 11:34, modifié 5 fois.
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] Trier un fichier texte un fonction taille des mots

#2

Message par bloodwolff »

je n'ai que 2minutes pour regarder sa mais ;e problème se situe clairement au niveau du next mal placé
car tu lis toutes les lignes et les places ;a la suite tous dans le même string donc cela te donne un string de 500*(disons 5 lettres par mot ) = 2500 de longueur au lieu de 500 string de 5 lettres

JE repasse ce soir pour le régler si il n'a pas déjà été résolu
Compte skype : bloodwolfff
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Trier un fichier texte un fonction taille des mots

#3

Message par matwachich »

Pourquoi faire simple quand on peut faire compliqué!!!

Code : Tout sélectionner

#include <File.au3>
#include <Array.au3>

Global $_MainDicoPath = @ScriptDir & "\dico.txt", $__MainDicoArray
Global $_File1, $_File2, $_File3, $_tmpVar_StrLen

_FileReadToArray($_MainDicoPath, $__MainDicoArray)
_ArraySort($__MainDicoArray)

$_File1 = FileOpen("2_5.txt", 2)
$_File2 = FileOpen("6_8.txt", 2)
$_File3 = FileOpen("9_.txt", 2)
$_FileTrash = FileOpen("inclassables.txt", 2)

For $i = 1 To $__MainDicoArray[0]
    $_tmpVar_StrLen = StringLen($__MainDicoArray[$i])
    Select
        Case $_tmpVar_StrLen >= 2 And $_tmpVar_StrLen <= 5
            FileWriteLine($_File1, $__MainDicoArray[$i])
        Case $_tmpVar_StrLen >= 6 And $_tmpVar_StrLen <= 8
            FileWriteLine($_File2, $__MainDicoArray[$i])
        Case $_tmpVar_StrLen >= 9
            FileWriteLine($_File3, $__MainDicoArray[$i])
        Case Else
            FileWriteLine($_FileTrash, $__MainDicoArray[$i])
    EndSelect
Next

FileClose($_File1)
FileClose($_File2)
FileClose($_File3)
FileClose($_FileTrash)
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Trier un fichier texte un fonction taille des mots

#4

Message par pierrotm777 »

Merci,

Je teste cela de suite
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Trier un fichier texte un fonction taille des mots

#5

Message par sylvanie »

Voici une autre version avec utilisation des regexp (encore ... mais c'est come les cahouettes :mrgreen: )

D'ailleurs ça donne l'occasion de voir un effet de bords indésirable de l'opérateur ou (|) lorsque c'est l'"expression de droite qui match, on a un double retours : vide pour la partie gaucheet le match de la partie droite.

Sinon les 2 expressions en questions sont
- tout ce qui suit un retours chariot avec d'éventuels espaces parasites puis constitué de min à max caractère suivi enventuellement d'espaces parasites jusu'à l'autre retours chariots

-La première ligne avec d'éventuels espaces parasites constituée de min à max caractère suivi enventuellement d'espaces parasites jusu'à l'autre retours chariots

► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Trier un fichier texte un fonction taille des mots

#6

Message par pierrotm777 »

la solution précédente ne fonctionnait (traitement interminable).
Cette dernière solution a fonctionné en , pufffff, même 10 secondes.

Merci encore de votre aide toujours précieuse !
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#7

Message par pierrotm777 »

J'ai ajouté une GUI avec un input et une barre de progression.
Mais je n'arrive pas à associer cette barre de progression à quoique ce soit !
► Afficher le texte
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#8

Message par Tlem »

@pierrotm777
Vous devriez prendre le temps de chercher une solution par vous même au lieu de demander systématiquement.

Pour la grande majorité des questions que vous avez déjà posé, une réponse existe sur le forum. Donc essayez de prendre le temps ...
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#9

Message par pierrotm777 »

Je vous certifie que je cherche seul et trouve beaucoup seul aussi !

Malgré ma petite expérience il y a beaucoup de fonction que je ne connais pas !

Et dans le cas de cette barre je ne vois pas de variable de comptage des mots permettant d'y associer celle-ci .

Je vous assure que ce qui vous parait facile ne l'est pas pour tout le monde car je ne viens pas du monde de la programmation mais de celui de la CAO et du design de PCB .
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#10

Message par pierrotm777 »

Bon, je vais faire plaisir à Tlem, :D, j'ai essayé et suis presque arrivé à la bonne solution sauf que la barre ne se remplie pas totalement :
J'ai ajouté quelques fonctionnalités au script , tel que le choix de la taille des mots.
Il me reste à trouver comment faire s'augmenter le nombre suivant si le précédent lui devient égal .
► Afficher le texte
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#11

Message par Tlem »

pierrotm777 a écrit :Je vous assure que ce qui vous parait facile ne l'est pas pour tout le monde car je ne viens pas du monde de la programmation mais de celui de la CAO et du design de PCB .
Je ne viens pas non plus du monde de la programmation et je n'ai pas de diplôme ou fait d'étude en ce sens.
Ce que je connais, je l'ai appris à force de lecture et de pratique.

Pour développer un script avec AutoIt, il faut certes quelques connaissances, mais la doc et beaucoup de bon sens suffit la plupart du temps.

Donc pour en revenir à votre barre de progression, vous voulez qu'elle évolue en fonction de quoi ?
- D'un nombre déterminé ?
- D'un nombre qui sera déterminé par le contenu de quelque chose ?
- Par rien du tout ... ?
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#12

Message par pierrotm777 »

Eh bien, je pense que la voir évoluer chaque fois qu'un mot a été déplacé vers un des 3 dictionnaires serait l'idéal .
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#13

Message par pierrotm777 »

J'ai testé cela qui semble être bon !

Quel est votre avis ?
► Afficher le texte
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#14

Message par Tlem »

Si le code fonctionne selon vos désires, c'est qu'il est bon. :P
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#15

Message par pierrotm777 »

Eh bien ce qui me laisse un doute c'est que, si je comprends bien :

Code : Tout sélectionner

$progress_pourcent [color=#FF0000]+= 10[/color]
GUICtrlSetData($progress, $progress_pourcent/$TotalOfWords*100)
me donne une progression par 10% ?

Si je change par $progress_pourcent += 1, la barre ne va pas juqu'au bout !
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#16

Message par bloodwolff »

LA boucle est effectué UBound($retours) - 1 fois
Donc si la boucle est effectué 34 fois , le pourcentage sera incrémenté 34 fois de 1 et bloquera à 34 %
Donc le but étant d'atteindre 100 à la fin on veut que si ubound($retour)-1 = 20 que chaque bond valent 5% pour atteindre 100% en 20 coup
Sa revient à dire chaque bond vaut 100/20 = 5% donc il faudra incrémenter de 100/ubound($retour)-1
Ce qui donne

Code : Tout sélectionner

$progress_pourcent += 100/ubound($retour)-1
Ce code fonctionnera seulement si le pourcentage sera à 0 initialement et finira à 100 sinon il s'Agit seulement de modifier le 100
PAr exemple si on veut que la barre passe de 60 à 80% dans cette étape on veut qu'elle augmente de 20% donc seulement remplacer le 100/ubound($retour)-1 par 20/ubound($retour)-1
Compte skype : bloodwolfff
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#17

Message par pierrotm777 »

Alors, j'ai essayé cela sans succés .

Code : Tout sélectionner

Func build_regexp($text,$min,$max="")
Local $pattern_gen="\n\s*([\w]{"&$min&","&$max&"})\s*\n|(\A[\w]{"&$min&","&$max&"})\s*\n"
Local $retours
$retours=StringRegExp($text,$pattern_gen,3)
For $i=0 to UBound($retours) - 1
$progress_pourcent += 100/ubound($retours)-1
GUICtrlSetData($progress, $progress_pourcent)
Next
If IsArray($retours) Then
    _ArraySort($retours)
    If ($retours[0]="") Then _ArrayDelete($retours,0) ; petit soucis de de stringregexp quand on a un match à droite de |, alors on a un retours ""+bonne réponse
    SetError(0)
    Return $retours
Else
    SetError(1)
    Return 0
EndIf
EndFunc
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#18

Message par bloodwolff »

ah désolé tente de rajouter des parenthèses

Code : Tout sélectionner

$progress_pourcent += 100/[color=#FF0000]([/color]ubound($retours)-1[color=#FF0000])[/color]
Car la il effectuais la division avant le -1
donc 100/21-1 donne 3.76
alors que 100/(21-1) donne 5
Compte skype : bloodwolfff
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#19

Message par pierrotm777 »

Super merci encore
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Trier un fichier texte un fonction taille des mots

#20

Message par pierrotm777 »

Bonjour,
Toujours sur le même sujet, je viens d'essayer le script sur un fichier de mots russe , et, ça marche pas ...
Voici donc le script final complet:
► Afficher le texte
J'ai essayé en remplaçant le \w par \W et là le script fonctionne mais sauvegarde des "?"

Je joins le fichier de mots russe. Il sauvegardé avec notepad au format unicode !!!

Merci de votre aide !!!
Fichiers joints
ru.txt
(16.25 Kio) Téléchargé 47 fois
Répondre