今回は、Pythonで文字列の等号チェックを行うためのさまざまな方法を紹介します。
文字列比較とは、基本的に2つの文字列を比較することです。
テクニック1:Pythonの「==」演算子で2つの文字列の等質性をチェックする
Pythonの比較演算子は、2つの文字列を比較し、大文字と小文字を区別して等しいかどうかをチェックすることができます。
Python の `’==’ 演算子 は、文字列を一文字ずつ比較して、2つの文字列が等しければ True を返し、そうでなければ False を返します。
構文は以下の通りです。
string1 = = string2
|
例えば、以下の様になります。
str1 = "Python"
str2 = "Python"
str3 = "Java"
print (str1 = = str2)
print (str1 = = str3)
|
結果は以下の通りです。
True False |
テクニック2:Pythonの’!=’演算子で文字列を比較する
Pythonの’!=’演算子も、文字列の等値判定に利用することができます。
演算子は2つの文字列を比較し、等しくない場合はTrueを、そうでない場合はFalseを返します。
構文は以下の通りです。
string1 ! = string2
|
例えば、以下の様になります。
str1 = "Python"
str2 = "Python"
str3 = "Java"
if (str1 ! = str3):
print ( "str1 is not equal to str3" )
if (str1 ! = str2):
print ( "str1 is not equal to str2" )
else :
print ( "str1 is equal to str2" )
|
結果は以下の通りです。
str1 is not equal to str3
str1 is equal to str2
|
テクニック3 Pythonの’is’演算子による文字列の等値性チェック(Python
Pythonの “is “演算子は、2つの文字列オブジェクトが等しいかどうかを効率的にチェックするために使用することができます。
is 演算子は、2 つの変数が同じデータオブジェクトを指している場合は真を、そうでない場合は偽を返します。
構文は以下の通りです。
variable1 is variable2
|
例えば、以下の様になります。
str1 = "Python"
str2 = "Python"
str3 = "Java"
if (str1 is str3):
print ( "str1 is equal to str3" )
else :
print ( "str1 is not equal to str3" )
if (str1 is str2):
print ( "str1 is equal to str2" )
else :
print ( "str1 is not equal to str2" )
|
結果は、以下の通りになります。
str1 is not equal to str3
str1 is equal to str2
|
テクニック4:Pythonで文字列の等号チェックを行うための関数「êêà_eq_ã()」。
eq__()` メソッドは2つのオブジェクトを比較し、等しい場合はTrueを、そうでない場合はFalseを返します。
構文は以下の通りです。
string1.__eq__(string2) |
例えば、以下の様になります。
str1 = "Python"
str2 = "Python"
str3 = "Java"
if (str1.__eq__(str3)):
print ( "str1 is equal to str3" )
else :
print ( "str1 is not equal to str3" )
if (str1.__eq__(str2)):
print ( "str1 is equal to str2" )
else :
print ( "str1 is not equal to str2" )
|
結果は、以下の通りになります。
str1 is not equal to str3
str1 is equal to str2
|
Pythonで文字列の等号チェック : ケースレス比較
str1 = "Python"
str2 = "PYTHON"
if (str1.__eq__(str2)):
print ( "str1 is equal to str2" )
else :
print ( "str1 is not equal to str2" )
|
結果を出力すると、以下の様になります。
str1 is not equal to str2
|
上の例で見られるように、大文字と小文字を区別して比較しているため、結果は FALSE になります。
ケースレス比較、つまり大文字小文字を区別しない比較を行うには、Pythonのstring.casefold()関数を使用します。
string.casefold()`メソッドは、文字列を即座に小文字に変換してくれます。
文字列比較のシナリオでは、両方の入力文字列をcasefold()関数に渡すことができます。
こうして、両方の文字列が小文字に変換され、ケースレス比較ができるようになります。
構文は以下の様な感じです。
string.casefold() |
例として以下の様になります。
str1 = "Python"
str2 = "PYTHON"
str3 = "PYthoN"
if ((str1.casefold()).__eq__(str2.casefold())):
print ( "str1 is equal to str2" )
else :
print ( "str1 is not equal to str2" )
if ((str1.casefold()) = = (str3.casefold())):
print ( "str1 is equal to str3" )
else :
print ( "str1 is not equal to str3" )
|
結果は、以下の通りになります。
str1 is equal to str2
str1 is equal to str3
|
まとめ
今回は、Pythonの大文字と小文字を区別しない文字列比較の方法について説明しました。