Pythonで2つの文字列に共通する文字の数を数える方法
Pythonでは、2つの文字列が与えられたとき、1つ目の文字列の中に含まれていて、かつ2つ目の文字列にも存在する文字の数を求めたいケースがあります。本記事では、そのような「共通する文字の個数」を数えるための2つの代表的な方法を紹介します。
set(集合)を使う方法
set() 関数を使うと、文字列から重複を除いた一意な要素(ユニークな文字)を取得できます。さらに、& 演算子(積集合)を使えば、2つの集合に共通して含まれる要素を簡単に取り出すことができます。
コード例
strA = 'Tutorials Point'
uniq_strA = set(strA)
# 元の文字列
print("Given String\n", strA)
strB = 'aeio'
uniq_strB = set(strB)
# 検索対象の文字列
print("Search character strings\n", strB)
common_chars = uniq_strA & uniq_strB
print("Count of matching characters are : ", len(common_chars))
実行結果
上記のコードを実行すると、次のような出力が得られます。
Given String Tutorials Point Search character strings aeio Count of matching characters are : 3
この例では、'Tutorials Point' に含まれる一意な文字と 'aeio' の共通部分は a、o、i の3文字です。setは重複を自動的に排除するため、同じ文字が複数回現れても1つとしてカウントされる点に注意してください。
re.search を使う方法
もうひとつの方法として、標準ライブラリ re モジュールの search() 関数を利用します。1つ目の文字列を1文字ずつループで走査し、その文字が2つ目の文字列内に見つかった場合にカウント変数をインクリメントしていきます。
コード例
import re
strA = 'Tutorials Point'
# 元の文字列
print("Given String\n", strA)
strB = 'aeio'
# 検索対象の文字列
print("Search character strings\n", strB)
cnt = 0
for i in strA:
if re.search(i, strB):
cnt = cnt + 1
print("Count of matching characters are : ", cnt)
実行結果
上記のコードを実行すると、次のような出力が得られます。
Given String Tutorials Point Search character strings aeio Count of matching characters are : 5
こちらの方法では、'Tutorials Point' 内の各文字について順番にマッチ判定を行うため、重複した文字もそれぞれカウントされます。その結果、setを使った場合の「3」と異なり「5」という結果になります。具体的には、t・u・t・o・r・i・a・l・s・(空白)・P・o・i・n・t のうち、'aeio' に含まれる a、i、o が該当し、o が2回、i が2回、a が1回出現するため合計5回となります。
使い分けのポイント
- setを使う方法: 重複を無視して「何種類の文字が一致しているか」を知りたい場合に適しています。処理もシンプルで高速です。
- re.searchを使う方法: 出現回数も含めて一致文字を数えたい場合に適しています。ただし、正規表現の特殊文字(
.や*など)が含まれる場合はエスケープが必要になる点に注意しましょう。
目的に応じてこれらの方法を使い分けることで、文字列比較の処理を効率的に実装できます。
-
セットを使って文字列内の母音の数をカウントするPythonプログラム
本記事では、Pythonを使って文字列内に含まれる母音の数をカウントする方法について解説します。セット(set)を活用した効率的な実装を中心に、初心者の方にもわかりやすく説明していきます。 問題の概要 問題文:任意の文字列が与えられたとき、その文字列に含まれる母音の数をセットを使って数えます。 基本的なアプローチとしては、文字列全体を先頭から順に走査し、各文字が母音であるかどうかを判定します。母音であればカウントを1ずつ増やしていき、最終的な合計を出力します。 実装例 def vowel_count(str_): count = 0 # 母音をセットとして定義 vowe
-
Pythonで文字列内の母音の数を数える方法をわかりやすく解説
Pythonで文字列内の母音の数を数える基本手順Pythonでは、シンプルなループ処理を使うことで、文字列に含まれる母音(a、e、i、o、u)の数を簡単に数えることができます。ここでは、初心者にもわかりやすいように、基本的な実装手順を順を追って解説します。ステップ1:母音をまとめた文字列を用意するまず、すべての母音を格納した文字列オブジェクトを宣言します。>>> vowels = aeiouステップ2:カウント用の変数を初期化する次に、母音の出現回数を記録するための変数を0で初期化します。>>> count = 0ステップ3:文字列を走査して母音を判定する対