Page 1 sur 1
[ R ] Je cherche la fonction qui permet de calculer le nombre de caractères et mots contenus dans un fichier texte
Posté : lun. 03 juil. 2023 16:52
par Boulanza
Bonjour tout le monde,
Je cherche la fonction et/ou script qui permet de calculer le nombre de caractères et le nombre de mots contenus dans un fichier texte.
Merci pour votre aide.
Cordialement.
Re: [ ] Je cherche la fonction qui permet de calculer le nombre de caractères et mots contenus dans un fichier texte
Posté : lun. 03 juil. 2023 17:36
par jchd
Tout dépend de l'encodage du fichier et de ce qu'on considère comme "caractère" et "mot".
En page de code "simple", 1 octet = 1 caractère. Pour les pages de code "multibyte" (asiatiques, comme CJK, BIG5 et autres), c'est compliqué pour un occidental !
En Unicode UTF8 (qui est d'ailleurs aussi un jeu multibyte), UCS2 (utilisé par AutoIt), UTF16 ou UTF32, le nombre de caratères dépend de ce qu'on considère : chaque caractère du jeu Unicode ou des graphèmes, si on inclut les séparateurs et autres points de codes de contrôle (trait d'union conditionnel, sens d'écriture, divers marqueurs, etc.) et aussi la normalisation Unicode utilisée. Pour une introduction, voir cette page
https://r12a.github.io/scripts/tutorial/part3.
Cette considération s'applique donc aussi sur ce qu'on doit considérer comme "mot".
On peut utiliser une regex plus ou moins complexe pour obtenir ce qu'on veut, mais il faut déjà s'entendre sur ces définitions.
Re: [ ] Je cherche la fonction qui permet de calculer le nombre de caractères et mots contenus dans un fichier texte
Posté : lun. 03 juil. 2023 21:14
par mikell
Très intéressant ce lien jc ... à te dégoûter du regex

Re: [ ] Je cherche la fonction qui permet de calculer le nombre de caractères et mots contenus dans un fichier texte
Posté : lun. 03 juil. 2023 22:42
par jchd
C'est là qu'on voit toute l'utilité de la spécification \X de PCRE sans avoir à en gérer la complexité. C'est ce qui s'approche le plus de ce qu'on entend intuitivement pas "caractère".
Pour ce qui est des mots, il faut décider si MP3 est un mot, Z dans "génération Z", 2023 ou 1/2, ...
Il y a tout un monde magique à la racine de ce site, dédié à ces aspects d'Unicode et des multiples systèmes d'écriture de notre petite planète, plus quelques utilitaires en ligne bien sympas et surtout à jour. L'auteur fait partie du consortium Unicode et sait de quoi il parle. La doc officielle d'Unicode est peu digeste et à réserver aux spécialistes.
Re: [ ] Je cherche la fonction qui permet de calculer le nombre de caractères et mots contenus dans un fichier texte
Posté : mar. 04 juil. 2023 00:11
par Boulanza
Bonsoir,
C'est très intéressons ces explications que j'ignore complètement. Merci infiniment Monsieur jchd pour ces informations.
Cordialement.
Re: [ R ] Je cherche la fonction qui permet de calculer le nombre de caractères et mots contenus dans un fichier texte
Posté : jeu. 13 juil. 2023 10:37
par jpascal
Ce site est une véritable mine d'or.
Merci pour le lien.

Re: [ R ] Je cherche la fonction qui permet de calculer le nombre de caractères et mots contenus dans un fichier texte
Posté : ven. 14 juil. 2023 02:04
par jchd
Oui, un compendium bien utile et incomparablement plus accessible à nous autres non spécialistes que la volumineuse et très pointilleuse documentation officielle.
Re: [ R ] Je cherche la fonction qui permet de calculer le nombre de caractères et mots contenus dans un fichier texte
Posté : jeu. 09 nov. 2023 09:45
par Boulanza
Une des solutions
Code : Tout sélectionner
;Définir le nombre de caractères de toutes les lignes d'un fichier texte
$file = FileOpen(@ScriptDir&"\Test.txt" , 0)
; test si le fichier peut etre ouvert en lecture
If $file = -1 Then
MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier")
Exit
EndIf
$NbreCaractereTotal = 0
; Lecture du fichier ligne à ligne jusqu'au eof + compte du nombre de ligne
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$NbreCaractere = StringLen($line) ;Définir le nombre de caractères de la dernière ligne.
$NbreCaractereTotal = $NbreCaractereTotal + $NbreCaractere
Wend
msgbox(0,"",$NbreCaractereTotal)
;msgbox(0,"",$NbreCaractere)
FileClose($file)
Exit