【Python】文字列同士を比較する方法

PythonのTopに戻る


 

 文字列を比較する

文字列は比較演算子を用いて比較することができる。

print('abc' == 'abc')
# True

print('abc' == 'xyz')
# False

print('abc' != 'abc')
# False

print('abc' != 'xyz')
# True

print('abc' < 'abc')
# False

print('abc' <= 'abc')
# True

print('abc' < 'xyz')
# True

イコール(=)やノットイコール(!=)を使うのが一般的だが不等号なども利用できる。これは文字列の大小関係(順番)がUnicodeコードで判定されることによる。文字のUnicodeコードポイントは組み込み関数 ord() で取得可能。

※Unicodeコードポイントは大文字の方が若いので注意。日本語などではUnicodeコードポイントがまちまちなので使用機会はかなり限定的。

 

 配列やリストの比較

文字列に限った話ではないが、配列やリスト、またはそれらの要素を比較することも可能である。

array = ("abc", "def")
print( ("abc", "def") == array )
# True

list = ["abc", "def"]
print( ["abc", "def"] == list )
# True

print( "abc" == list[0])
# True

配列やリストが丸ごと比較できるのはPythonの便利な点である。言い換えれば、変数型の指定が不要という仕様がPythonの処理速度をやや遅くしているとも言える。

 

 特殊文字を含む文字列

基本的な特殊文字を含む文字列であれば比較可能。また、+演算子による文字列の結合を使って比較することも可能である(日付の比較などで使うかも?)。

a = 'abc\*%'
print("\\abc\*%" == "\\" + a)
# True

 

 変数の型にはご注意

当然ながら、変数の型が揃っていないと比較してもFalseが返される。エラーにならず常にFalseとなるため、特に変数のまま条件分岐で比較処理している場合だと見つけにくいバグの一因になる可能性がある。

print( 000 == '000')
# False

list = ["abc", "def"]
print( list == "xyz" )
# False

 


PythonのTopに戻る