IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Nombre occurence Mots (novice)


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2018
    Messages : 180
    Par défaut Nombre occurence Mots (novice)
    Bonjour à tous,

    Je cherche à créer un programme python qui, grâce à un fichier texte en lecture, me permettra de sortir un tableur excel contenant le nombre d’occurrence de chacun des mots. Ceci afin de faire sortir les mots les plus utilisés.

    J'ai donc crée un début de script qui fait bien le travail. Cependant, je rencontre un problème d'encodage. Effectivement, le mot "Réalisation" va s'écrire "rÃalisation".
    Pire encore, le programme que j'ai crée me découpe ce mot en 2 parties : "rÃ", "alisation".

    J'ouvre mon fichier texte, je crée une liste "liste_mots" qui contient tous les mots sans ponctuation, je crée un dictionnaire contenant les mots et leur score d'apparition grâce au module Counter de Collections, et je crée un fichier excel contenant ces informations.

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    from collections import Counter
    import csv
    import re
     
    liste_mots = []
    dictionaire = {}
     
    with open("texte.txt", "r", encoding='utf-8') as fichier:
        for line in fichier:
            line = line.strip()
     
    liste_mots = re.findall("\w+",open("texte.txt").read())	#METTRE DANS UNE LISTE TOUS LES MOTS SANS PONCTUATION
    dictionaire = (Counter(liste_mots).most_common())
     
    with open("result.csv", "w", newline='', encoding='utf-8') as resultat:
    	fieldnames = ['Mot', 'Score']
    	w = csv.DictWriter(resultat, fieldnames=fieldnames, delimiter = ";")
    	w.writeheader() #POUR AFFICHER LES ENTETES
    	for i in dictionaire:
    		w.writerow({'Mot': i[0], 'Score': i[1]})
    Merci à vous.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 709
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 709
    Par défaut
    Salut,

    Citation Envoyé par preliator Voir le message
    Cependant, je rencontre un problème d'encodage. Effectivement, le mot "Réalisation" va s'écrire "rÃalisation".
    Pire encore, le programme que j'ai crée me découpe ce mot en 2 parties : "rÃ", "alisation".
    C'est ce qui arrive lorsqu'on lit de l'utf-8 avec un encoding 8 bits.
    Et ligne 13: vous lisez le fichier sans préciser l'encoding (et on ne comprend pas trop à quoi sert la lecture précédente).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2018
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2018
    Messages : 180
    Par défaut
    Merci pour votre réponse. Effectivement, j'ai enlevé cette partie du script ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    with open("texte.txt", "r", encoding='utf-8') as fichier:
        for line in fichier:
            line = line.strip()
    ... qui me faisait ouvrir le fichier 2 fois.

    Comment le script se profilerait il avec l'option supplémentaire de l'encoding sur cette partie ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    liste_mots = re.findall("\w+",open("texte.txt").read())	#METTRE DANS UNE LISTE TOUS LES MOTS SANS PONCTUATION
    dictionaire = (Counter(liste_mots).most_common())
    Merci.

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/02/2015, 13h24
  2. Recherche le nombre de mots dans un fichier
    Par peppena dans le forum Linux
    Réponses: 2
    Dernier message: 19/04/2006, 10h46
  3. Réponses: 11
    Dernier message: 07/02/2006, 16h37
  4. Réponses: 13
    Dernier message: 16/11/2005, 13h15
  5. Compter nombre de mots dans une chaîne.
    Par xVINCEx dans le forum C++
    Réponses: 22
    Dernier message: 24/11/2004, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo