Pythonの正規表現(reモジュール)で2つの文字列を比較する方法
Pythonでは、標準ライブラリのreモジュールを利用することで、正規表現による文字列の比較や照合を簡単に行えます。最も一般的な方法は、re.search()関数を使って、一方の文字列(パターン)がもう一方の文字列の中に存在するかどうかを調べるアプローチです。
re.search()を使った比較の基本例
以下のコードでは、文字列s1を正規表現パターンとして扱い、それが文字列s2内にマッチするかどうかを判定しています。
import re
s1 = 'Pink Forest'
s2 = 'Pink Forrest'
if bool(re.search(s1, s2)) == True:
print('Strings match')
else:
print('Strings do not match')
実行結果
Strings do not match
コードの解説
re.search(パターン, 対象文字列)は、対象文字列の中にパターンが見つかった場合はマッチオブジェクトを返し、見つからなかった場合はNoneを返します。この戻り値をbool()で変換することで、マッチしたかどうかをTrue/Falseとして判定できます。
この例では、s1 = 'Pink Forest'というパターンは、綴りが1文字違うs2 = 'Pink Forrest'の中には連続した形では存在しないため、マッチせず「Strings do not match」が出力されます。
補足:完全一致の比較について
正規表現による部分一致ではなく、文字列が完全に等しいかだけを確認したい場合は、シンプルに==演算子を使う方が適切です。
if s1 == s2:
print('Strings match')
else:
print('Strings do not match')
一方、大文字小文字を無視したい、特定のパターン(数字のみ、特定の形式など)に一致するかを調べたいといった柔軟な条件で比較したい場合には、正規表現が非常に有効です。より厳密に文字列全体との一致を確認したいときは、Python 3系で使えるre.fullmatch()を活用すると良いでしょう。
-
Pythonで2つの文字列を分割して回文を作成できるか判定するプログラム
問題の概要同じ長さを持つ2つの文字列 a と b があるとします。あるインデックスを1つ選び、その位置で両方の文字列を同時に分割します。すると、a は前半部分 a_pref と後半部分 a_suff に(a = a_pref + a_suff)、b も同様に b_pref と b_suff に(b = b_pref + b_suff)分けられます。このとき、「a_pref + b_suff」または「b_pref + a_suff」という組み合わせのどちらかが回文(前から読んでも後ろから読んでも同じ文字列)になるかどうかを判定するのが目的です。なお、分割位置によっては片方が空文字列になっても構い
-
Pythonで2つのプロットを並べて作成する方法【matplotlibのsubplot活用】
matplotlibのsubplot(row, col, index)メソッドを使うと、1つの図(figure)を行数×列数の領域に分割し、指定したインデックスの位置にそれぞれグラフを描画できます。本記事では、このメソッドを利用して、1つの図の中に2つのグラフを横並びで作成する方法を解説します。 実装の手順 numpyを使って、x座標と2種類のy座標(y1、y2)のデータポイントを作成します。 nrows=1、ncols=2、index=1を指定してsubplot()メソッドを呼び出し、現在のfigureに最初のサブプロットを追加します。 plot()メソッドで、xとy1のデータを使って折れ