ホームページ  >  記事  >  データベース  >  Python で文字の出現数を数える方法

Python で文字の出現数を数える方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-09 17:54:0513000ブラウズ

今回は、Python が文字の出現数をカウントする方法を説明します。 Python で文字の出現数をカウントするときの 注意事項 は何ですか。実際のケースを見てみましょう。

タイトル:

ファイル内の各単語の出現数を数え、最も頻繁に使用される 5 つの単語をリストします。

前書き:

この質問は、長年にわたって CET-4 および CET-6 試験に出てきた高頻度単語の統計など、実用的なシナリオで広く使用されています。私は Li Xiaolai のことを覚えています。プログラミングスキルを活かして暗記本を出版したベストセラーの語彙本は、単語の出現頻度に基づいて暗記するもので、学生の間で非常に人気があります。これは、実際の問題を解決するためにプログラミング スキルが使用される典型的なシナリオです。さらに、データ分析中に、これらのワード クラウド効果は基本的に単語の頻度統計に基づいてフォント サイズを調整します。Python の知識をうまく活用して問題を解決できれば、本格的に Python を使い始めたことになります。

分析

この質問では主に次の知識ポイントを検討します:

1. ファイルを正しく読み書きする方法

Python でファイルを読み書きするには、組み込み関数

を使用できます。 open() と python2 と python3 の open 関数には特定の違いがあります。たとえば、Python ではファイルの読み取りと書き込みのエンコード形式を指定できますが、通常は 2 と 3 の両方と互換性を持たせることができません。 io モジュールの open 機能を使用すると、ドキュメントをチェックしてドキュメント間の違いを理解し、アクティブな学習能力と情報を確認する習慣を身に付けることができます。 もう 1 つのポイントは、ファイルの読み取りと書き込み後に、ファイル記述子を閉じる必要があるということです。try...excel...finally 構文を使用するだけでなく、より洗練された with...as 構文も使用できます。ファイルを自動的に閉じます。

2. データを並べ替える方法

sorted 関数は頻繁に使用される組み込み関数であり、パラメーター キーを指定することでカスタマイズされた並べ替えを実行できるため、その使い方も非常に強力です。数値と文字を並べ替えるだけでなく、リスト、辞書、カスタム オブジェクトを並べ替えることもできます。たとえば、人物オブジェクトの場合は、年齢に従って並べ替えることができます。さらに、list.sort とsorted の違いを明確に区別できれば、この関数は非常に柔軟に使用できます。

3. 辞書

データ型の使用 単語頻度統計を行うには、単語が辞書のキーとして使用され、単語の回数が最適なデータ型であることは間違いありません。が辞書の値として使用されます。 記録が簡単です。 各単語の出現頻度を決定することにより、辞書は電話番号に関連付けられた電話帳によく似ています。また、この辞書の最大の特徴は、検索速度が非常に速いことです。理想的には、時間計算量は O(1) です。辞書について詳しく知りたい場合は、この記事を読むことをお勧めします

https://

www.laurentluce.com/posts/python-dictionary-implementation/

4.

正規表現の使用 テキストと文字列の処理では、正規表現は単なる成果物であり、データ クローリングやデータ クリーニングに広く使用されています。 Python への変換は、すべての

プログラミング言語

でサポートされています。私たちがしなければならないのは、正規表現を学ぶだけでなく、その API に慣れることによってのみ、それを実際のシナリオに適用できるようになります。正規表現に関する記事をお勧めします: http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html また、一部の学生がこのライブラリを紹介していることもわかりました。は中国語の単語の分割を行っているので、興味があれば学ぶことができます。

実装分析後、実際に非常に迅速に実装できます。したがって、要件を取得したら、まず要件を明確にし、それを達成するためにどのようなテクノロジを使用できるかを考えてからコードを書き始める必要があります。実際、仕事でコードを書くのに費やす時間は半分未満です。

# -*- 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)

印刷結果:

('is', 10)
('better', 8)
('than', 8)
('the', 6)
('to', 5)

概要

あなたのコードを見ると、多くのコードは依然として不規則な名前を持っており (PEP8 を読むことをお勧めします)、コードのレイアウトはわかりにくいです (読みにくいため、フォーマットには Pycharm を使用することをお勧めします)。実装方法が非常に複雑に見えるコードも多数あります (コードが複雑になればなるほど、通常はバグが多くなります)。もちろん、実装方法はこれだけではありません。

たとえば、Python モジュール自体は、dict クラスを継承し、統計に使用される collections.Counter クラスを提供します。注意していれば、このクラスを使用していることがわかります。私が実装したカウンターは、コレクションのカウンターと非常によく似ています。実際、これはホイールの作成であり、既製のものがあれば、作成する必要はありません。もっとうまくできるという自信がない限り、自分のホイールを使ってください。 Python が Counter ツールを提供しなかったらどうするかを考えることもできます。

さらに、このモジュールは順序付き辞書オブジェクト OrderedDict も提供します。これにより、手動による並べ替え操作を省略できます。最後に、上で述べたすべての内容を学習して要約することをお勧めします。 100日続けることができれば、Pythonをかなり理解できるようになると思います。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨書籍:

Python で行列をリストに変換する方法

Python でリスト、配列、行列を相互に変換する方法

以上がPython で文字の出現数を数える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。