Pythonで文字列内の単語数をカウントする3つの方法
はじめに
Pythonでは、テキスト処理の一環として「文章中に単語がいくつ含まれているか」を数える場面がよくあります。本記事では、与えられた文字列から単語数をカウントするための代表的な3つのアプローチを、具体的なコード例と実行結果とともにわかりやすく解説します。
問題の定義
問題文: 与えられた文字列の中に含まれる単語の数を数える。
例えば、「Tutorials point is a learning platform」という文字列には、6個の単語が含まれています。
方法1:split()関数を使う
split()関数は、文字列をスペースを区切り文字として分割し、リストを返します。引数を指定しない場合、スペースがデフォルトの区切り文字として自動的に適用されます。返されたリストの要素数をlen()関数で取得すれば、それがそのまま単語数になります。
コード例
test_string = "Tutorials point is a learning platform"
# 元の文字列を表示
print("元の文字列 : " + test_string)
# split()関数で単語数を取得
res = len(test_string.split())
# 結果を表示
print("文字列内の単語数 : " + str(res))
実行結果
元の文字列 : Tutorials point is a learning platform 文字列内の単語数 : 6
方法2:正規表現モジュール(re)を使う
正規表現モジュールreのfindall()関数を使うと、パターン r'\w+'(1つ以上の英数字またはアンダースコアの連なり)に一致するすべての単語を抽出できます。抽出結果のリストの長さをlen()で取得すれば単語数になります。この方法は、句読点などが混在するテキストにも柔軟に対応できるのが特徴です。
コード例
import re
test_string = "Tutorials point is a learning platform"
# 元の文字列を表示
print("元の文字列 : " + test_string)
# 正規表現のfindall()関数で単語を抽出
res = len(re.findall(r'\w+', test_string))
# 結果を表示
print("文字列内の単語数 : " + str(res))
実行結果
元の文字列 : Tutorials point is a learning platform 文字列内の単語数 : 6
方法3:sum()・strip()・split()を組み合わせる
この方法では、まずsplit()で文字列を単語ごとに分割し、それぞれの単語に対してstrip(string.punctuation)で前後の記号を取り除きます。その上でisalpha()により、アルファベットだけで構成された単語かどうかを判定し、判定結果(True/False)をsum()で合計することで、実際の単語数を正確にカウントできます。記号だけのトークンを除外したい場合に特に有効です。
コード例
import string
test_string = "Tutorials point is a learning platform"
# 元の文字列を表示
print("元の文字列 : " + test_string)
# sum() + strip() + split()で単語数を取得
res = sum([i.strip(string.punctuation).isalpha() for i in test_string.split()])
# 結果を表示
print("文字列内の単語数 : " + str(res))
実行結果
元の文字列 : Tutorials point is a learning platform 文字列内の単語数 : 6
3つの方法の比較
どの方法も同じ結果(6単語)を返しますが、それぞれ特徴が異なります。
- split(): 最もシンプルで高速。スペース区切りの通常のテキストに最適。
- re.findall(): 正規表現による柔軟なパターン指定が可能。複雑な条件での抽出に向いている。
- sum()+strip()+split(): 記号のみのトークンを除外でき、より厳密な単語カウントが可能。
まとめ
本記事では、Pythonで文字列内の単語数をカウントする3つの方法――split()関数、正規表現モジュールreのfindall()、そしてsum()+strip()+split()の組み合わせ――を紹介しました。扱うテキストの性質や目的に応じて、最適な方法を選択してください。
-
文字列の中から偶数の長さの単語を出力するPythonプログラム
本記事では、与えられた問題を解決するための考え方と実装方法について解説します。Pythonの基本的な文字列操作を組み合わせることで、初心者の方でも簡単に実装できる内容となっています。 問題文 文字列が与えられたとき、その中に含まれる単語のうち、文字数が偶数であるものをすべて画面に表示するプログラムを作成します。 例えば、「tutorial point」という文字列が入力された場合、「tutorial」は8文字(偶数)なので出力され、「point」は5文字(奇数)なので出力されません。 解決のアプローチ この問題は、以下の手順で解決できます。 split()関数を使って、入力文字列を空白区切り
-
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’