【初心者向け】Pythonのcasefold()メソッドで大文字小文字を無視した文字列比較を行う方法
このチュートリアルでは、Pythonの文字列メソッドstr.casefold()について詳しく解説します。このメソッドは引数を一切受け取らず、戻り値として「大文字小文字を区別しない比較(ケースレス比較)」に適した文字列を返します。
casefold()とは何か?
そもそも「ケースレス比較(caseless comparison)」とは何でしょうか。例えば、ドイツ語の小文字ß(エスツェット)は、ssと等価な文字として扱われます。str.casefold()メソッドを使うと、ßがssに変換されます。つまり、casefold()はすべての文字を小文字に変換するだけでなく、こうした特殊な文字の等価変換も自動的に行ってくれるのです。
通常のlower()メソッドではßはそのまま残りますが、casefold()はより積極的に正規化を行うため、国際的なテキスト処理において非常に有用です。
基本的な使い方
まずはシンプルな例から見てみましょう。
# 文字列の初期化 string = "TUTORIALSPOINT" # casefold()を適用した結果を出力 print(string.casefold())
実行結果
上記のプログラムを実行すると、次のような出力が得られます。
tutorialspoint
すべての大文字が小文字に変換されていることが確認できますね。
ケースレス比較の実例
次に、ケースレス比較が実際に役立つ場面を見てみましょう。文字列ßtutorialspointとsstutorialspointを直接比較すると、結果はFalseになります。以下のコードで確認してみます。
# 文字列の初期化 string = "ßtutorialspoint" second_string = "sstutorialspoint" # 2つの文字列を比較 print(string == second_string)
実行結果
予想どおり、このプログラムの出力はFalseです。
False
人間の目には同じように見えても、コンピュータにとってßとssは異なる文字として扱われるためです。
casefold()を使った比較
そこで、同じ比較をstr.casefold()メソッドを使って行ってみます。
# 文字列の初期化 string = "ßtutorialspoint" second_string = "sstutorialspoint" # casefold()を適用してから2つの文字列を比較 print(string.casefold() == second_string)
実行結果
上記のコードを実行すると、今度は次のような結果になります。
True
casefold()によってßがssに変換されたため、両者の文字列が等しいと判定されました。このように、ユーザー入力の検証や多言語対応アプリケーションでの文字列照合など、厳密な大小文字の違いを無視したい場面では、lower()よりもcasefold()を使用するのが推奨されています。
まとめ
str.casefold()は引数なしで呼び出せる文字列メソッドであり、大文字小文字の違いや特殊文字の等価性を吸収した文字列を返します。ドイツ語のßのような特殊文字を含むテキストを扱う際には、ぜひ活用してみてください。
このチュートリアルについてご不明な点がある場合は、コメント欄でお気軽にお尋ねください。
-
Pythonで16進数の文字列を10進数に変換する方法を解説
この記事では、16進数の文字列を10進数に変換する問題の解決策について詳しく解説します。課題の概要16進数形式の文字列が与えられたとき、それを対応する10進数の値に変換することを目標とします。例えば、16進数の「F」は10進数では「15」に相当します。この問題には主に2つのアプローチがあります。力ずく(ブルートフォース)な手法:int関数を使った明示的な型変換組み込みモジュールを活用する手法:astモジュールのliteral_eval関数を使用方法1:int関数を使った変換最もシンプルで一般的な方法は、Pythonの組み込み関数であるint()を利用するものです。この関数は2つの引数を受け取り
-
Pythonで文字列内のミラー文字を検索する方法【初心者向け解説】
ユーザーが入力した文字列と位置(ポジション)が与えられたとき、その位置から文字列の末尾までの文字を、アルファベット順を反転させた「ミラー文字」に変換するプログラムを作成します。この操作では、「a」→「z」、「b」→「y」、「c」→「x」、「d」→「w」のように、アルファベットの最初の文字が最後の文字に対応する形で置き換えを行います。 入力: p = 3 入力文字列 = python 出力: pygslm 上記の例では、3番目の位置以降の文字「t」「h」「o」「n」が、それぞれ逆順のアルファベット「g」「s」「l」「m」に変換されていることがわかります。先頭から指定位置までは元の文字列