2017-08-17 8 views
1

How do I do a case-insensitive string comparison?Pythonの下部()対引数casefold()文字列照合および変換

Iがグーグルから理解ものと

とその上のリンクを小文字に両方の機能: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.') 

Iを使用すべき:

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). 
+1

「どのXが良いですか?意見に基づいており、SOの話題です。 – DyZ

+0

ありがとう@DYZしかし、私はプログラミングの観点から話しています。意見ではなくコーディングの違いを意味します。 – iCoder

+0

しかし、あなたは**何が*より良い*を意味するか、*どのように*良いことを測定するかを定義しなければなりません。そうでなければ、あなたが求めているのは単なる意見です。 –

答えて

4

casefoldingはよりユニークなUnicode文字の多くをより匹敵させるように設定されたlower()のより積極的なバージョンです。最初は非常に異なって見えるかもしれない正規化テキストの別の形式ですが、多くの異なる言語の文字が考慮されます。

私はあなたが実際に折りたたみ何場合によく見るがので、ここで良いスタートだ、ある取るお勧め:W3 Case Folding Wiki

あなたが低く、英語で厳密に作業している場合(、あなたの他の二つの質問に答えるために)とcasefold()はまったく同じ結果をもたらすはずです。 しかし、単純な26文字のアルファベット以上の文字を使用する他の言語のテキストを正規化しようとしている場合は、casefold()を使用して文字列を比較するとより一貫した結果が得られます。 elastic.co case folding

+0

ありがとう、これは今意味があります! – iCoder

関連する問題