HOWTO · Python
Como Converter String em Caixa Baixa em Python 2 e 3
Demonstra como converter uma string ou uma string unicode em minúsculas em Python 2 e 3.
Converter string em minúsculas em Python 3
str desde que Python 3.0 contém por padrão caracteres Unicode, significando que qualquer string como "unicode example", 'unicode example 2' é armazenada como Unicode.
Portanto, você poderia utilizar str.lower() para converter qualquer string em minúsculas no Python 3.
exampleString = "CaseString"
exampleString.lower()
# Out: 'casestring'
exampleString = "СтрокаСлучая"
exampleString.lower()
# Out: 'строкаслучая'
str.casefold() conversão sem cas
str.lower() converte a string para minúsculas, mas não converte as distinções de caixa na string.
Por exemplo, ß em alemão é igual a s - ss, e ß em si já é minúscula, portanto, str.lower() não irá convertê-la.
Mas str.casefold() irá converter ß para ss.
>>> 'Straße'.lower()
'straße'
>>> 'Straße'.casefold()
'strasse'
Converter string para minúsculas em Python 2.7
str em Python 2.7 não é armazenado como Unicode, e Unicode strings são instâncias do tipo unicode. Devemos distinguir se a string é uma string ASCII ou uma string unicode quando convertemos a string em minúsculas.
ASCII tipo
É o mesmo com o método utilizado em Python 3. str.lower() converte a string para minúsculas.
exampleString = "CaseStringExample"
exampleString.lower()
# Out: 'casestringexample'
unicode tipo
Se os caracteres na string são do tipo Unicode, e a string não é explicitamente representada no tipo Unicode, o método str.lower() não converte a string para minúsculas.
# python 2.x
exampleString = "СтрокаСлучая"
print exampleString.lower()
#Out: СтрокаСлучая
exampleString.lower() == exampleString
#Out: True
Objetos Python para bytes não-ASCII em uma string sem codificação dada porque a codificação pretendida está implícita.
Usando Unicode literal, mas não str.
exampleUnicodeString = u"СтрокаСлучая"
exampleUnicode
# u'\u0421\u0442\u0440\u043e\u043a\u0430\u0421\u043b\u0443\u0447\u0430\u044f'
exampleUnicodeString.lower()
# u'\u0441\u0442\u0440\u043e\u043a\u0430\u0441\u043b\u0443\u0447\u0430\u044f'
print exampleUnicodeString.lower()
# Out: строкаслучая
Você pode ver aqui que o primeiro caractere da string é convertido de \u0421 para \u0441.
Converter um str para unicode
Se a string dada estiver na forma de str, precisamos primeiro convertê-la para Unicode antes da conversão em minúsculas.
exampleString = "СтрокаСлучая"
print exampleString.decode("utf-8").lower()
# Out: строкаслучая
Conclusão
O método lower() é o método para converter string para minúsculas tanto em Python 2 como em Python 3, mas com uma diferença perceptível.
string em Python 3 é a string unicode por padrão, mas string em Python 2 não é. Se a string não é explicitamente representada para ser do tipo unicode, por exemplo não colocando u antes da string, a string unicode não será convertida para minúsculas.
O str.casefold converte as distinções de caixa para suas combinações sem caixa, mas só está disponível em Python 3. Você poderia instalar py2casefold em Python 2.