Python での大文字小文字を区別しない文字列の比較

  1. 大文字小文字を区別しない文字列比較を行う lower() メソッド
  2. 大文字小文字を区別しない文字列比較を行う upper() メソッド
  3. 大文字小文字を区別しない文字列比較を行う casefold() メソッド

このチュートリアルでは、Python で 2つ以上の文字列変数の大文字小文字を区別しない比較を行う方法について説明します。

大文字小文字を区別しない文字列比較を行う lower() メソッド

Python の文字列には、文字列中のすべての文字を小文字に変換する lower() メソッドが組み込まれています。これは文字列のすべての文字を小文字に変換した文字列を返します。lower()` メソッドを使って 2つの文字列を小文字に変換し、大文字小文字を区別せずに比較することができます。

normal_str1 = "Hello World!"
lower_str1 = normal_str1.lower()
print(lower_str1)

出力:

hello world!

次に、2 番目の文字列変数 normal_str2 に対しても同様の処理を行います。

normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()
print(lower_str2)

出力:

hello world!

見ての通り、両方の文字列がすべて小文字に変換されています。次のステップでは、両方の文字列変数を比較して出力を表示します。

normal_str1 = "Hello World!"
lower_str1 = normal_str1.lower()
normal_str2 = "HELLO WORLD!"
lower_str2 = normal_str2.lower()

if(lower_str1 == lower_str2):
    print("Both variables are equal")
else:
    print("Both variables are not equal")

出力:

Both variables are equal

大文字小文字を区別しない文字列比較を行う upper() メソッド

前回のセッションでは、lower() メソッドを使って大文字小文字を区別しない文字列比較を行う方法を紹介しました。upper() メソッドを使用するロジックは同じです。どちらのメソッドでも既存の文字列変数を大文字か小文字に変更したいのです。upper()` メソッドは、文字列変数のすべての文字を大文字に変換するための文字列クラスの組み込みメソッドです。

normal_str1 = "Hello World!"
upper_str1 = normal_str1.upper()

normal_str2 = "hello world!"
upper_str2 = normal_str2.upper()

if(upper_str1 == upper_str2):
    print("Both variables are equal")
else:
    print("Both variables are not equal")

出力:

Both variables are equal

大文字小文字を区別しない文字列比較を行う casefold() メソッド

文字列変数を小文字に変換するためには、casefold() メソッドがより積極的な方法です。例えば、

ドイツ語の文字 'ß' は既に小文字になっています。そのため、lower() メソッドは 'ß' に何もしない。しかし、casefold()'ß'"ss" に変換します。

normal_str = 'ß'
casefold_str = normal_str.casefold()
lower_str = normal_str.lower()
print("Case folded form of ß is : " + casefold_str)
print("Lower cased form of ß is : " + lower_str)

出力:

Case folded form of ß is : ss
Lower cased form of ß is : ß

casefold() メソッドは、すべての文字を小文字に積極的に変換した文字列変数を返します。この新しい文字列変数を比較して、大文字小文字を区別しない比較を行うことができます。

normal_str1 = "Hello World ß!"
casefold_str1 = normal_str1.casefold()

normal_str2 = "Hello World ss!"
casefold_str2 = normal_str2.casefold()

if(casefold_str1 == casefold_str2):
    print("Both variables are equal")
else:
    print("Both variables are not equal")

出力:

Both variables are equal

関連記事 - Python String

  • Python はフロートを文字列に変換します
  • Python で文字列から特定の文字を削除する