Maison  >  Article  >  développement back-end  >  Python compte le nombre de fois qu'un mot apparaît_python

Python compte le nombre de fois qu'un mot apparaît_python

不言
不言original
2018-04-04 16:18:025057parcourir

Récemment, mon responsable m'a confié la tâche de compter le nombre d'occurrences de chaque mot dans un fichier et de répertorier les cinq mots les plus fréquents. Cet article vous apporte une analyse de l'idée de compter le nombre de mots en Python. Les amis qui en ont besoin peuvent s'y référer

Titre :

Compter dans un fichier Le nombre d'occurrences de chaque mot, lister les 5 mots les plus fréquents.

Avant-propos :

Cette question est largement utilisée dans des scénarios d'application pratique, tels que les statistiques sur les étudiants de haut niveau apparus dans le Examens CET-4 et CET-6 au fil des années. Vocabulaire de fréquence, je me souviens que Li Xiaolai a utilisé ses compétences en programmation pour publier un livre à succès sur la mémorisation de mots, qui était très populaire parmi les étudiants. Il s’agit d’un scénario typique dans lequel les compétences en programmation sont utilisées pour résoudre des problèmes réels. De plus, lors de l'analyse des données, ces effets de nuage de mots sont essentiellement basés sur des statistiques de fréquence des mots pour ajuster la taille de la police. Si vous pouvez utiliser habilement les connaissances de Python pour résoudre des problèmes, cela signifie que vous débutez vraiment avec Python.

Analyse

Cette question examine principalement les aspects suivants de la connaissance :

1. Écrire des fichiers

Pour lire et écrire des fichiers en python, vous pouvez utiliser la fonction intégrée open(), et la fonction open présente certaines différences entre python2 et python3. Par exemple, en Python, vous. peut spécifier le format d'encodage pour la lecture et l'écriture des fichiers. Cela n'est pas possible avec Python. Afin d'être compatible avec 2 et 3, nous utilisons généralement la fonction open sous le module io. entre eux, et cultiver les capacités d’apprentissage actif et l’habitude de vérifier les informations.

Un autre point est que le descripteur de fichier doit être fermé après la lecture et l'écriture du fichier. En plus d'utiliser la syntaxe try...sauf...finally, nous pouvons également utiliser la syntaxe plus élégante with.. .as syntaxe pour fermer automatiquement le fichier.

2. Comment trier les données

La fonction triée est une fonction intégrée fréquemment utilisée, et son utilisation est également très puissante car elle peut spécifier des paramètres clés pour effectuer un tri personnalisé, ce qui signifie que vous pouvez non seulement trier les chiffres et les lettres, mais également trier les listes, les dictionnaires et les objets personnalisés. Il vous suffit d'indiquer à la fonction triée quelles sont les règles de tri, par exemple Pour un objet personne, je peux. triez-le par âge ou par taille et poids, cette fonction est donc très flexible. De plus, il existe une méthode de tri intégrée pour les objets de liste. Si vous pouvez clairement distinguer la différence entre list.sort et sorted, cela signifie que vous pouvez déjà l'utiliser. avec souplesse.

3. Utilisation du type de données du dictionnaire

Pour faire des statistiques de fréquence des mots, l'utilisation d'un dictionnaire est sans aucun doute le type de données le plus approprié. Les mots sont utilisés comme clés du. dictionnaire, et le nombre de fois qu'un mot apparaît est utilisé comme valeur. Le dictionnaire enregistre commodément la fréquence de chaque mot. Le dictionnaire ressemble beaucoup à notre annuaire téléphonique, chaque nom étant associé à un numéro de téléphone. De plus, la plus grande caractéristique du dictionnaire est que sa vitesse de requête est très rapide. Idéalement, la complexité temporelle est O(1), je veux dire idéalement. Si vous souhaitez en savoir plus sur les dictionnaires, je vous recommande de lire cet article https://www.laurentluce.com/posts/python-dictionary-implementation/

.

4. Application des expressions régulières

Pour le traitement de texte et de chaînes, les expressions régulières sont simplement un artefact. Elles sont largement utilisées, que ce soit pour l'exploration ou le nettoyage de données. Bien sûr, les expressions régulières ne sont pas uniques à Python, elles sont prises en charge par tous les langages de programmation. Ce que nous devons faire est non seulement d'apprendre les expressions régulières mais aussi son API. Ce n'est que lorsque nous sommes familiers avec l'API que nous pouvons l'appliquer à des scénarios réels. Je recommande un article sur les expressions régulières : http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html De plus, j'ai également découvert que certains étudiants avaient présenté la bibliothèque de segmentation de mots jieba. La bibliothèque fait la segmentation des mots chinois, c'est très utile. Si vous êtes intéressé, vous pouvez en apprendre davantage.

Mise en œuvre

Après l'avoir analysé, nous pouvons effectivement le mettre en œuvre très rapidement. Ainsi, lorsque nous recevons une exigence, nous devons d'abord clarifier l'exigence et réfléchir aux technologies qui peuvent être utilisées pour y parvenir, puis commencer à écrire du code. En fait, au travail, nous passons en réalité moins de la moitié du temps à écrire du code.

# -*- coding:utf-8 -*-
import io
import re
class Counter:
 def __init__(self, path):
 """
 :param path: 文件路径
 """
 self.mapping = dict()
 with io.open(path, encoding="utf-8") as f:
  data = f.read()
  words = [s.lower() for s in re.findall("\w+", data)]
  for word in words:
  self.mapping[word] = self.mapping.get(word, 0) + 1
 def most_common(self, n):
 assert n > 0, "n should be large than 0"
 return sorted(self.mapping.items(), key=lambda item: item[1], reverse=True)[:n]
if __name__ == '__main__':
 most_common_5 = Counter("importthis.txt").most_common(5)
 for item in most_common_5:
 print(item)

Résultat d'impression :

('est', 10)

('mieux', 8)
('que', 8)
('le', 6)
('à', 5)

Résumé

Quand je regarde votre code, de nombreux codes ont encore des noms irréguliers (il est recommandé de lire PEP8), et la disposition du code prête à confusion (il est difficile à lire, il est recommandé de utilisez Pycharm pour le formatage). Il existe également de nombreux codes dont les méthodes d'implémentation semblent très compliquées (plus le code est complexe, plus il contient généralement de bugs). Bien entendu, la méthode de mise en œuvre n’est pas la seule.

Par exemple, le module Python lui-même fournit une classe collections.Counter, qui hérite de la classe dict et est utilisée pour les statistiques. J'ai découvert que certains étudiants utilisent cette classe pour l'implémenter. Si vous faites attention, vous la trouverez peut-être. . , le compteur que j'ai implémenté est très similaire au compteur sous collections. En fait, il s'agit d'une création de roues qui peut exercer notre réflexion en matière de programmation. Bien sûr, s'il y a des choses toutes faites au travail, ce n'est pas nécessaire. fabriquer des roues vous-même, à moins que vous ayez la confiance nécessaire pour le faire mieux. Vous pouvez également réfléchir à ce que vous feriez si Python ne fournissait pas l'outil Counter.

De plus, ce module fournit également un objet dictionnaire ordonné OrderedDict, qui peut nous éviter des opérations de tri manuel. Enfin, je vous recommande d’étudier et de résumer tout le contenu que j’ai mentionné ci-dessus. Si vous pouvez persister pendant 100 jours, je pense que vous maîtriserez bien Python.

Recommandations associées :

Python implémente la sortie d'un tableau bidimensionnel en tant que Picture_python

python implémente les attributs d'instance de typage Vérifiez

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn