Python で文字列の単語を数える

Elsie Dela Pena 2023年1月30日
  1. split() および len() メソッドを使用して、Python 文字列の単語をカウントする
  2. 正規表現モジュールを使用して Python 文字列の単語を数える
  3. sum()strip() および split() メソッドを使用して、Python 文字列内の単語をカウントする
  4. Python で count() メソッドを使用して単語をカウントする文字列 Python
Python で文字列の単語を数える

このチュートリアルでは、文字列 Python で単語を数える方法を紹介します。

split() および len() メソッドを使用して、Python 文字列の単語をカウントする

split() は、特定の区切り文字を使用して文字列内の単語を区切り、文字列の配列を返す Python の組み込みメソッドです。このメソッドは、引数として最大 2つのパラメーターを受け入れます。

  • separator(オプション)-区切り文字として機能します(例:コンマ、セミコロン、引用符、スラッシュ)。文字列内で分離する境界を指定します。separator が指定されていない場合、デフォルトの separator は任意の空白(スペース、改行、タブなど)です。
  • maxsplit(オプション)-分割の最大数を定義します。定義されていない場合の maxsplit のデフォルト値は -1 です。これは、制限がなく、文字列を複数のチャンクに分割することを意味します。

split() の構文:

str.split(separator, maxsplit)

len() も Python の組み込みメソッドであり、配列内の文字列の数を返すか、オブジェクト内のアイテムの長さをカウントします。このメソッドは、文字列、バイト、リスト、オブジェクト、セット、またはコレクションの 1つのパラメーターのみを受け入れます。引数が欠落しているか無効である場合、TypeError 例外が発生します。

len() の構文:

len(s)

split() メソッドと len() メソッドが文字列内の単語をどのようにカウントするかを見てみましょう。

例 1:パラメーターなし

# initialize string
text = "The quick brown fox jumps over the lazy dog"

# default separator: space
result = len(text.split())

print("There are " + str(result) + " words.")

出力:

There are 9 words.

例 2:separator パラメーターを使用

# initialize string
bucket_list = "Japan, Singapore, Maldives, Europe, Italy, Korea"

# comma delimiter
result = len(bucket_list.split(","))

# Prints an array of strings
print(bucket_list.split(","))

print("There are " + str(result) + " words.")

出力:

['Japan', ' Singapore', ' Maldives', ' Europe', ' Italy', ' Korea']
There are 6 words.

split() メソッドは文字列の新しいリストを返し、len() はリスト内の文字列をカウントします。

例 3:separator および maxsplit パラメーターを使用

# initialize string
bucket_list = "Japan, Singapore, Maldives, Europe, Italy, Korea"

# comma delimiter
result = len(bucket_list.split(",", 3))

# Prints an array of strings
print(bucket_list.split(",", 3))

print("There are " + str(result) + " words.")

出力:

['Japan', ' Singapore', ' Maldives', ' Europe, Italy, Korea']
There are 4 words.

maxsplit は、bucket_list の最初の 3つのコンマのみを分割します。maxsplit を設定すると、リストには maxsplit+1 アイテムが含まれます。

出力:

['Japan', ' Singapore', ' Maldives, Europe, Italy, Korea']
There are 3 words.

split() メソッドは、大きな文字列を小さな文字列に分解します。したがって、文字列の配列内の単語のカウントは、単語に正確に基づくのではなく、分割区切り文字の定義方法に基づいて行われます。

正規表現モジュールを使用して Python 文字列の単語を数える

正規表現(略して regex または regexp)は、テキスト文字列を検索および操作するための非常に強力なツールです。これは、データの前処理、検証の目的、テキスト文字列内のパターンの検索などに使用できます。正規表現は、句読点や不要な特殊文字が含まれているシナリオで、テキスト文字列内の単語を数えるのにも役立ちます。正規表現は Python の組み込みパッケージであるため、使用を開始するには、パッケージ re をインポートする必要があります。

# import regex module
import re

# initialize string
text = "Python !! is the be1st $$             programming language @"

# using regex findall()
result = len(re.findall(r"\w+", text))

print("There are " + str(result) + " words.")

出力:

There are 6 words.

sum()strip() および split() メソッドを使用して、Python 文字列内の単語をカウントする

このアプローチでは、正規表現を使用せずに単語をカウントします。sum()strip()、および split() はすべて Python の組み込みメソッドです。それぞれの方法とその機能について簡単に説明します。

sum() メソッドは、項目を左から右に加算し、合計を返します。このメソッドは 2つのパラメーターを取ります。

  • iterable(必須)-合計する文字列、リスト、タプルなど。これらは数字でなければなりません。
  • start(オプション)-メソッドの合計または戻り値に追加される数値。

sum() の構文:

sum(iterable, start)

次は strip() メソッドです。引数がない場合は、先頭と末尾の両方の空白を取り除いた文字列のコピーを返します。それ以外の場合は、引数で定義された文字列が削除されます。

  • chars(オプション)-テキストの左右の部分から削除する文字列を指定します。

string.strip() の構文:

string.strip(chars)

最後に、split() メソッドについては、このアプローチの前にすでに説明しました。

それでは、これらのメソッドを一緒に使用して、文字列内の単語を数えましょう。まず、Python の組み込みモジュールである string をインポートしてから、その機能を使用する必要があります。

import string

# initialize string
text = "Python !! is the be1st $$             programming language @"

# using the sum(), strip(), split() methods
result = sum([i.strip(string.punctuation).isalpha() for i in text.split()])

print("There are " + str(result) + " words.")

出力:

There are 5 words.

Python で count() メソッドを使用して単語をカウントする文字列 Python

count() メソッドは Python の組み込みメソッドです。3つのパラメーターを取り、指定された部分文字列に基づいて出現回数を返します。

  • substring(必須)-文字列内で検索されるキーワード
  • start(オプション)-検索を開始する場所に関するインデックス
  • end(オプション)-検索が終了する場所に関するインデックス
Python では、インデックスは 0 から始まります。

count() の構文:

string.count(substring, start, end)

このメソッドは、文字列で見つかった単語の総数ではなく、部分文字列で見つかった出現回数を返すという点で、前のメソッドとは異なります。以下の例から、このメソッドがどのように機能するかを見てみましょう。

# initialize string
text = "Python: How to count words in string Python"
substring = "Python"

total_occurrences = text.count(substring)

print("There are " + str(total_occurrences) + " occurrences.")

出力:

There are 2 occurrences.

この方法では、部分文字列が単語全体、フレーズ、文字、または文字や数字の任意の組み合わせであるかどうかは関係ありません。

要約すると、ユースケースに応じて、これらのアプローチのいずれかを選択できます。スペースで区切られた単語の場合、関数 split() または len() という単純なアプローチを使用できます。テキスト文字列をフィルタリングして特殊文字のない単語をカウントするには、regex モジュールを使用します。特定の文字を含まない単語を数えるパターンを作成します。regex を使用せずに、sum()+strip()+split() メソッドの組み合わせである代替手段を使用します。最後に、count() メソッドを使用して、文字列で見つかった特定の単語をカウントすることもできます。

関連記事 - Python String