title: lower() vs. casefold() in string matching and converting to lowercase
body: <p><a href="https://stackoverflow.com/questions/319426/how-do-i-do-a-case-insensitive-string-comparison-in-python">How do I do a case-insensitive string comparison?</a></p>
  <p>From what I understood from Google and the link above that both functions: <code>lower()</code> and <code>casefold()</code> will convert the string to lowercase, but <code>casefold()</code> will convert even the caseless letters such as the <code>ß</code> in German to <code>ss</code>.</p>
  <p>All of that about Greek letters, but my question in general:</p>
  <ul>
  <li>are there any other differences?</li>
  <li>which one is better to convert to lowercase?</li>
  <li>which one is better to check the matching strings?</li>
  </ul>
  <hr />
  <p><strong>Part 2:</strong></p>
  <pre><code>firstString = &quot;der Fluß&quot;
  secondString = &quot;der Fluss&quot;
  
  # ß is equivalent to ss
  if firstString.casefold() == secondString.casefold():
      print('The strings are equal.')
  else:
      print('The strings are not equal.')
  </code></pre>
  <p>In the example above should I use:</p>
  <p><code>lower() # the result is not equal which make sense to me</code></p>
  <p>Or:</p>
  <pre><code>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).
  </code></pre>