Page 2 sur 2

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

Posté : dim. 13 févr. 2011 16:24
par bloodwolff

Code : Tout sélectionner

$_File1 = FileOpen("dico1", 42)
$_File2 = FileOpen("dico2", 42)
$_File3 = FileOpen("dico3", 42)

Code : Tout sélectionner

Local $pattern_gen = "(?m)(?x)^(\W{" & $min & "," & $max & "})$"

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

Posté : dim. 13 févr. 2011 22:34
par jchd
C'est normal. La bibliothèque PCRE employée par AutoIt n'est _pas_ actuellement compilée avec le support UTF-8 (Unicode). Donc les \w, \W et autres métacaractères qui font référence à une propriété Unicode ne fonctionnent pas comme on pourrait le souhaiter dès lors que la chaîne sujet contient des caractères > 0x7F.

Je travaille actuellement sur une solution PCRE (avec support Unicode et dernières nouveautés PCRE) compatible AutoIt (avec fonctions de callbacks) et SQLite (pour mettre à profit l'opérateur REGEXP). Cette DLL sera aussi utilisable par tout programme souhaitant employer l'API standard de PCRE.

C'est un travail en cours à temps très partagé, donc ne retenez pas votre souffle jusqu'à sa sortie !

PCRE = Perl-Compatible Regular Expression

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

Posté : dim. 13 févr. 2011 23:33
par jchd
sylvanie a écrit :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.
C'est normal, il y a deux captures, donc deux retours. Au lieu de (abc)|(def) il faut faire ((?:abc)|(?:def)) pour n'avoir qu'une seule capture. Ou dans ce cas, bien plus simplement, (abc|def).
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
On peut fusionner les deux cas en employant \b : \b(\w{min,max})\b.

Attention : la plupart des métacaractères perdent leur signification spéciale à l'intérieur d'un jeu défini par [].

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

Posté : lun. 14 févr. 2011 07:34
par pierrotm777
bloodwolff a écrit :

Code : Tout sélectionner

$_File1 = FileOpen("dico1", 42)
$_File2 = FileOpen("dico2", 42)
$_File3 = FileOpen("dico3", 42)

Code : Tout sélectionner

Local $pattern_gen = "(?m)(?x)^(\W{" & $min & "," & $max & "})$"
Ces modifications fonctionnent super bien mais je me retrouve avec un espace entre chaque mot !

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

Posté : lun. 14 févr. 2011 18:51
par Tlem
Pouvez-vous essayer ce code sur vos dictionnaires.
Je l'ai essayé sur votre fichier Russe modifié pour qu'il fasse environs 3,5Mo (en dupliquant les lignes pour arriver à 100000 lignes) et il met à peine 6 secondes pour faire le traitement.
Comme j'ai un peut de mal avec les RegExp, je propose ce que je sais faire. ;)
► Afficher le texte

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

Posté : mar. 15 févr. 2011 00:00
par bloodwolff
@ pierrot oui j'avais remarqué et j'ai pris le temps de bidouiller un peu ton script. Diminution du nombre de ligne (De 184 à 116 et j'ai pas eu le temps de toucher au switch :lol: ) mais oublier de le poster :roll:

Ps: J'ai tester de dupliquer le fichier pour atteindre 8,45mo et il le trie en environ 3 secondes :roll:
► Afficher le texte

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

Posté : mar. 15 févr. 2011 01:20
par Tlem
bloodwolff a écrit :J'ai tester de dupliquer le fichier pour atteindre 8,45mo et il le trie en environ 3 secondes :roll:
Hummm, j'ai oublié de préciser le matériel utilisé :
Portable C2D 1.66Ghz avec 2,5Go de RAM / Windows XP SP3

De plus cette version n'a pas de limite sur la taille du fichier dictionnaire.

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

Posté : mar. 15 févr. 2011 08:45
par pierrotm777
Merci à tous deux . C'est les russes qui vont être content :wink: