Page 1 sur 1

[R] Compter le nombre de mot dans un fichier texte

Posté : mar. 07 oct. 2008 21:04
par franck99
Bonjour,

Etant débutant sur Autoit je sollicite votre aide.
Après plusieurs recherches sur le forum je n'ai pas trouvé de solution.

Mon objectif est de compter le nombre de fois qu'apparaît le mot open dans un fichier texte.
J'ai commencé par :
► Afficher le texte

Merci d'avance.

Re: [..] Compter le nombre de mot dans un fichier texte

Posté : mar. 07 oct. 2008 22:04
par sylvanie
Bonsoir,
Il me semble que le sujet avait été abordé qq part, mais je ne sais plus où ...
En attendant voici 2 méthodes de recherche en mode non case sensitif, une par stringinstr l'autre par stringregexp

:
► Afficher le texte

Re: [..] Compter le nombre de mot dans un fichier texte

Posté : mar. 07 oct. 2008 22:23
par moutelous
Bonjour,

Juste une toute petite précision : pour le regex je remplacerais

Code : Tout sélectionner

$resul=StringRegExp($contenu,"(?i)"&$text,3)
par

Code : Tout sélectionner

$resul=StringRegExp($contenu,"(?i)\b"&$text&"\b",3)
pour éviter de compter des occurrences de "open" inclus dans un mot (openbar par exemple :wink: )

A+

Re: [..] Compter le nombre de mot dans un fichier texte

Posté : mar. 07 oct. 2008 22:56
par sylvanie
effevtivement. du coups ceci reste aussi vrai avec le stringinstr, cependant c'est plus délicat à peaufiner. Finalement qui a dit que les expressions régulières étaient compliquées :mrgreen:

Re: [..] Compter le nombre de mot dans un fichier texte

Posté : mar. 07 oct. 2008 23:18
par Tlem
Image

Re: [..] Compter le nombre de mot dans un fichier texte

Posté : mer. 08 oct. 2008 07:49
par jbnh
Ca me semble bizarre mais... j'ai l'impression qu'il y a moyen en deux lignes:

Code : Tout sélectionner

$array = stringsplit('Salut ca va oui moi ca va bien', ' ')
MsgBox(0x0, "total", number(UBound($array)-1))

Re: [..] Compter le nombre de mot dans un fichier texte

Posté : mer. 08 oct. 2008 08:38
par moutelous
Bonjour,

@ jbnh ....

Dur dur le matin ... :wink: il me semble que tu as lu la demande de frank99 un peu en diagonale ....

Il faut en fait compter le nombre total d'un mot bien particulier dans un fichier texte ....
franck99 a écrit :Mon objectif est de compter le nombre de fois qu'apparaît le mot open dans un fichier texte.
A+

Re: [..] Compter le nombre de mot dans un fichier texte

Posté : mer. 08 oct. 2008 11:07
par franck99
bonjour,

Un grand merci à vous tous : moutelous,jbnh,tlem,sylvanie... et tout le forum :D
Je trouve la méthode regex vraiment top.

Par contre, j'ai du mal avec IsArray ces tableaux comment se représente-t-il, une colonne avec un ID et une autre avec une ligne ou des mots du fichier texte ?

Merci.

Re: [R] Compter le nombre de mot dans un fichier texte

Posté : mer. 08 oct. 2008 15:12
par jbnh
@moutelous: haha j'ai bien rit, j'ai carrément pas lu en diagonal j'ai lu que le titre !!! complètement a coté de la plaque le jbnh

@franck99:

Isarray permet enfait de seulement valider le fait que notre résult soit bien une array pour continuer à faire une suite d'actions et comme tu l'as bien dit: un tableau comprend une colonne avec 'l'ID' ( result[0] , [1] etc.) et le texte auquel il correspond (en l'occurrence ici que des open vu que c'est le mot qu'on cherche).

Vla l'exemple:

Code : Tout sélectionner

#include <array.au3>
$text="open"
$len_text=StringLen($text)
$contenu=FileRead("toto.txt")



;méthode regexp
$resul=StringRegExp($contenu,"(?i)"&$text,3)
If IsArray($resul) Then
_ArrayDisplay($resul, 'open')
EndIf
 

Et en bonus ma méthode mais complète cette fois ci :) :

Code : Tout sélectionner

$text="open"
$len_text=StringLen($text)
$contenu=FileRead("toto.txt")

$array = stringsplit($contenu, ' ')

If IsArray($array) Then

$i=0
$a=0
    Do
        If $array[$i] = $text Then
        $a =$a+1
        Endif
    $i=$i+1
    Until $i = Number(UBound($array))
EndIf

MsgBox(0,"résultat",$text&" a été trouvé "&$a&" fois")

Re: [R] Compter le nombre de mot dans un fichier texte

Posté : mer. 08 oct. 2008 20:20
par moutelous
Bonsoir,

@jbnh ....

Ton bonus fonctionne bien dans le cas d'une phrase avec espace .... il fonctionne légèrement moins bien dans le cas d'un texte où les occurrences peuvent être séparés par des virgules, point virgules ou autres retours chariots.


A+