Pythonの正規表現を使って文字列内で最も多く出現する数字を求める方法
このチュートリアルでは、正規表現を使って文字列の中で最も多く出現する数字を検出する方法を解説します。Pythonで実際にコードを書きながら、手順を追って確認していきましょう。
以下の手順に従ってプログラムを作成します。
- re モジュールと collections モジュールをインポートします。
- 数字を含む文字列を初期化します。
- 正規表現ですべての数字を抽出し、リストに格納します。
- collections モジュールの Counter を使って、最も多く出現する数字を特定します。
コード例
# モジュールのインポート
import re
import collections
# 文字列の初期化
string = '1222tutorials321232point3442'
# すべての数字を検索する正規表現
regex = r'[0-9]'
# 文字列からすべての数字を取得
numbers = re.findall(regex, string)
# Counterオブジェクトの作成
counter = collections.Counter(numbers)
# 最も多く出現する数字を特定
high_frequency = 0
highest_frequency_number = None
for key in list(counter.keys()):
if counter[key] > high_frequency:
high_frequency = counter[key]
highest_frequency_number = key
# 結果を出力
print(highest_frequency_number)
実行結果
上記のコードを実行すると、次のような結果が得られます。
2
コードの解説
処理の流れを順番に見ていきましょう。
- re.findall(): 正規表現パターン
r'[0-9]'に一致するすべての文字(ここでは1桁の数字)をリストとして返します。サンプル文字列の場合、['1', '2', '2', '2', '3', ...]のようなリストが得られます。 - collections.Counter(): リスト内の各要素の出現回数を自動的に集計してくれる便利なクラスです。counterオブジェクトには、各数字とその出現回数が辞書形式で格納されます。
- ループ処理: 各数字の出現回数を順番に比較し、これまでの最大値より大きければその数字と回数を記録します。ループ終了時点で、最も出現回数の多い数字が変数に残ります。
サンプル文字列「1222tutorials321232point3442」における各数字の出現回数は次のとおりです。
- 「1」: 2回
- 「2」: 7回
- 「3」: 3回
- 「4」: 2回
そのため、最も多く出現する数字は「2」という結果になります。
なお、連続した数字をひとつの数値として扱いたい場合は、正規表現を r'[0-9]+' や r'\d+' に変更することで対応できます。
まとめ
本チュートリアルでは、正規表現と Counter を組み合わせることで、文字列内で最も頻繁に出現する数字を簡単に特定できることを学びました。チュートリアルについて質問がある場合は、コメント欄でお気軽にお知らせください。
-
C++で文字列の部分文字列の総数を求める方法を解説
この記事では、与えられた文字列から作成できる空でない部分文字列の個数を求める方法について解説します。入力 : string = "moon" 出力 : 10 説明 : 部分文字列は m、o、o、n、mo、oo、on、moo、oon、moon の 10 個です。 入力 : string = "yellow" 出力 : 21解法のアプローチ文字列の長さを n とします。上の例からも分かるように、考えられるすべての部分文字列の個数を求めるには、長さ n、(n-1)、(n-2)、(n-3)、……2、1 の部分文字列の個数を順に加算していく必要があります。部分文
-
セットを使って文字列内の母音の数をカウントするPythonプログラム
本記事では、Pythonを使って文字列内に含まれる母音の数をカウントする方法について解説します。セット(set)を活用した効率的な実装を中心に、初心者の方にもわかりやすく説明していきます。 問題の概要 問題文:任意の文字列が与えられたとき、その文字列に含まれる母音の数をセットを使って数えます。 基本的なアプローチとしては、文字列全体を先頭から順に走査し、各文字が母音であるかどうかを判定します。母音であればカウントを1ずつ増やしていき、最終的な合計を出力します。 実装例 def vowel_count(str_): count = 0 # 母音をセットとして定義 vowe