Pythonのcasefoldメソッドを使って文字列の大文字と小文字の処理をする方法

スポンサーリンク

PythonのString casefold()メソッドは大文字小文字を区別した文字列を返すので、これを利用して文字列中の大文字小文字の区別をなくす。

これが何を意味するのかを見てみましょう。


スポンサーリンク

Python String casefold() メソッドの使用法

このメソッドは String クラスに属し、String オブジェクトに対してのみ使用することができます

このメソッドのシンタックスは以下の通りです。

string_obj.casefold()

これは、すべての大文字小文字の変換を行った後の、新しい文字列を返します。

例えば、すべての大文字を小文字に変換します。

my_str = "Hello from Python"
 
casefolded_str = my_str.casefold()
 
print(casefolded_str)

結果は以下の通りです。

hello from askpython

これは、英語のアルファベットの大文字をすべて小文字に変換するものです。

しかし、文字列が他の言語や他のエンコーディングの文字を持っている場合はどうでしょうか?Pythonの文字列casefold()メソッドがこの問題を解決してくれます。

ドイツ語の小文字 ‘ß ‘ を例にとってみましょう。

これは英語の文字列 “ss” に対応します。

ドイツのアルファベットにはエンコーディングがあるので、これをデコードして英語の文字列にします。

このアルファベットに対して lower() メソッドを使っても、この文字はすでに小文字になっているので、出力は ‘ß ‘ のままです。

Python string casefold() は小文字に変換するだけでなく、英語の文字列 “ss” を確実に出力します。

以下のスクリーンショットはこの違いを表しています。

s1 = 'ß'
s2 = 'ss'
s3 = 'SS'
if s1.casefold() == s2.casefold():
    print('Casefolded strings of s1 and s2 are equal')
else:
    print('Casefolded strings of s1 and s2 are not equal')
 
if s1.casefold() == s3.casefold():
    print('Casefolded strings of s1 and s3 are equal')

もうひとつ、文字列 ‘ß‘ と “SS” が同じ文字列 “ss” に解決される例を示しましょう。

Casefolded strings of s1 and s2 are equal
Casefolded strings of s1 and s3 are equal

結果は以下の通りです。

German String Casefold
German String Casefold

確かに、これらの文字列は両方とも同じケースフォールド文字列に解決される!


まとめ

今回は、Pythonの文字列のcasefold()メソッドの使い方を学びました。


タイトルとURLをコピーしました