How do I lowercase a string in Python?
Easily convert any string to lowercase in Python with the .lower()
method:
For more practical examples, edge cases, and best practices, read along.
Sailing the .lower()
sea
The backbone of string lowering
The fundamental method in Python to convert a string to lowercase is the method str.lower()
. Here is what you need to remember:
- Immutability: Strings in Python are immutable which means the
.lower()
method doesn't modify the original string but returns a new one. - Reusable: Assign the result of the
.lower()
call to a variable if you need to use the lowercase string afterwards.
Version-specific nuances
The handling of strings differs between Python 2 and Python 3:
- Python 2: It differentiates between byte strings and Unicode strings. Strings need to be prefixed with
u
to indicate they are Unicode. - Unicode Management: Unicode strings need to be decoded before converting to lowercase:
unicode_string.decode('utf-8').lower()
.
Note: Python 3 handles all strings as Unicode, making these steps unnecessary.
Case-insensitive comparison
For more robust case-insensitive comparisons, Python 3 provides:
.casefold()
: A more aggressive version of.lower()
, used for case-insensitive comparisons.
Use .casefold()
to handle special characters like the German ß correctly.
Clean coding with lower()
Robust, maintainable code
When working with .lower()
, aim for understandable and maintainable code. Be explicit:
Veer away from string
module
Avoid string.ascii_lowercase
and string.ascii_uppercase
for changing cases manually. They are merely constants and do not provide any method for case conversion!
Python 2 Unicode literals
For Unicode strings, Python 2 requires the u
prefix:
Deep Dive: Unicode
Consistent text with Unicode
Python's built-in support for Unicode ensures the consistency of text representation. Understanding this can help you:
- Python 2 Unicode Literals: For 16-bit codes, use the
\u
escape sequence. - PEP 263: Defines how to handle Unicode in Python source files.
Encoding nuances
Encoding and decoding are crucial aspects when working with byte strings, especially in Python 2:
- To manipulate byte strings, convert them to Unicode first.
- After manipulation, convert Unicode strings back to bytes if necessary with
.encode('utf-8')
.
Was this article helpful?