大文字と小文字を区別しない文字列比較を行うにはどうすればよいですか?
Googleと上記のリンクから理解したことから、両方の関数:lower()
とcasefold()
は文字列を小文字に変換しますが、casefold()
は大文字と小文字を変換しますss
へのドイツ語の_ß
_など。
ギリシャ文字についてのすべてですが、一般的に私の質問:
パート2:
_firstString = "der Fluß"
secondString = "der Fluss"
# ß is equivalent to ss
if firstString.casefold() == secondString.casefold():
print('The strings are equal.')
else:
print('The strings are not equal.')
_
上記の例では、次を使用する必要があります。
lower() # the result is not equal which make sense to me
または:
_casefold() # which ß is ss and result is the
# strings are equal. (since I am a beginner that still does not
# make sense to me. I see different strings).
_
ケースフォールディングは、lower()
のより積極的なバージョンであり、よりユニークなUnicode文字の多くを比較可能にするために設定されています。これは、最初は非常に異なるように見えるテキストを正規化する別の形式ですが、多くの異なる言語の文字を考慮に入れます。
ケースの折りたたみが実際にどのようなものかを詳しく調べることをお勧めします。そのための良いスタートです。 W3 Case Folding Wiki
他の2つの質問に答えるために、英語で厳密に作業している場合、lower()
とcasefold()
はまったく同じ結果をもたらすはずです。ただし、単純な26文字以上のアルファベット(ASCIIのみを使用)を使用する他の言語のテキストを正規化する場合は、casefold()
を使用して文字列を比較します。 。
別のソース: Elastic.co Case Folding
編集:私は最近、別の非常に良いものを見つけました わずかに異なる質問への関連する答え ここでSO(大文字と小文字を区別しない文字列比較を行う)