Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文中の単語数をカウントする方法|split()とisalpha()を使った2つのアプローチ

本記事では、Pythonを使って文章中の単語数を数えるための解法と、その具体的なアプローチについて詳しく解説します。

問題定義

ある文が与えられたとき、その文に含まれる単語の総数をカウントするプログラムを作成します。

ここでは、以下の2つのアプローチを取り上げます。

  • アプローチ1: split()関数を使用する方法
  • アプローチ2: strip()関数とisalpha()関数を組み合わせる方法

アプローチ1:split()関数を使う方法

最もシンプルな方法は、文字列に対してsplit()関数を適用するやり方です。split()はデフォルトで空白文字(スペースやタブなど)を区切りとして文字列を分割し、単語のリストを返します。このリストの長さをlen()で取得すれば、単語数が求まります。

コード例

test_string = "Tutorials point "
res = len(test_string.split())
print("The number of words in string are : " + str(res))

実行結果

The number of words in string are : 2

この例では、文末に余分なスペースが含まれていても、split()が自動的に空の要素を無視してくれるため、正しく「2」という結果が得られます。

アプローチ2:strip()とisalpha()関数を組み合わせる方法

より厳密に単語を判定したい場合は、strip()isalpha()を組み合わせた方法が有効です。この方法では、各単語から句読点などの記号を除去した上で、それがアルファベットのみで構成されているかどうかをチェックします。これにより、「word,」のような記号付きのトークンも正確に単語として認識できます。

コード例

import string
test_string = "Tutorials point "
res = sum([i.strip(string.punctuation).isalpha() for i in test_string.split()])
print("The number of words in string are : " + str(res))

実行結果

The number of words in string are : 2

string.punctuationには「!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~」などの記号が定義されており、strip()によって両端の記号が取り除かれます。その後、isalpha()で英字のみの文字列かどうかを判定し、条件を満たす要素だけを合計しています。

まとめ

本記事では、Pythonで文章中の単語数をカウントする2つのアプローチを学びました。手軽に処理したい場合はsplit()を使う方法が便利で、記号を含むテキストを厳密に扱いたい場合にはstrip()isalpha()の組み合わせが適しています。用途に応じて使い分けることで、より堅牢なテキスト処理が可能になります。

  1. 文字列の中から偶数の長さの単語を出力するPythonプログラム

    本記事では、与えられた問題を解決するための考え方と実装方法について解説します。Pythonの基本的な文字列操作を組み合わせることで、初心者の方でも簡単に実装できる内容となっています。 問題文 文字列が与えられたとき、その中に含まれる単語のうち、文字数が偶数であるものをすべて画面に表示するプログラムを作成します。 例えば、「tutorial point」という文字列が入力された場合、「tutorial」は8文字(偶数)なので出力され、「point」は5文字(奇数)なので出力されません。 解決のアプローチ この問題は、以下の手順で解決できます。 split()関数を使って、入力文字列を空白区切り

  2. Pythonで文がパングラムかどうかを判定するプログラムの作り方

    与えられた文がパングラム(パングラム:pangram)であるかどうかを判定するのが、本記事のテーマです。パングラムとは、アルファベットのすべての文字(a〜z)を少なくとも1回は含んでいる単語や文のことを指します。たとえば有名な例として「The quick brown fox jumps over the lazy dog」が挙げられます。 この問題は、Pythonのset()メソッドやリスト操作を組み合わせることで、シンプルに解決できます。 判定条件の例 Input: string = abc def ghi jkl mno pqr stu vwx yz Output: Yes // ‘a’