Difference between casefold() and lower() in Python
In this article, we will learn the differences between casefold() and lower() in Python. The string lower() is an in-built method in Python language. It converts all uppercase letters in a string into lowercase and then returns the string. Whereas casefold() method is an advanced version of lower() method, it converts the uppercase letter to lowercase including some special characters which are not specified in the ASCII table for example 'ß' which is a German letter and its lowercase letter is 'ss'.
lower() method in Python
In this example, we have stored a string in variable 's1' which includes uppercase letters, and converted it to lowercase using the lower() method.
Syntax of lower(): string.lower()
Parameters: It does not take any parameter.
Returns: It returns a lowercase string of the given string.
s1 = "GeeksForGeeks"
s2 = s1.lower()
print(s2)
Output
geeksforgeeks
casefold() method in Python
In this example, we have stored a German letter 'ß' in 's1' and converted it to lowercase using both methods casefold() and lower() and we can see in the output that casefold() converts it to lowercase whereas using lower(), the letter is printed as it is after conversion.
Syntax of casefold(): string.casefold()
Parameters: It does not take any parameter.
Returns: It returns a lowercase string of the given string.
s1 = "ß"
s2 = s1.casefold()
print("Using casefold() - ",s2)
s3 = s1.lower()
print("Using lower() - ",s3)
Output
Using casefold() - ss Using lower() - ß
Difference between lower() and casefold() in Python
Feature | lower() | casefold() |
---|---|---|
Purpose | Converts uppercase letters to lowercase. | Converts uppercase letters to lowercase, including special characters and locale-specific cases. |
Handling of Special Characters | Doesn't handle special or language-specific cases. | Handles special cases like German "ß" (sharp S) correctly (e.g., "ß".casefold() => "ss"). |
Use Case | Basic lowercase conversion for general text processing. | Best for case-insensitive comparisons, especially for multilingual text. |
Example | "HELLO".lower() => "hello" | "HELLO".casefold() => "hello" |
Example with Special Characters | "ß".lower() => "ß" | "ß".casefold() => "ss" |