Comment convertir une chaîne de caractères en minuscules en Python 2 et 3

  1. Convertir une chaîne de caractères en minuscules en Python 3
  2. Convertir une chaîne de caractères en minuscules en Python 2.7
  3. Conclusion

Convertir une chaîne de caractères en minuscules en Python 3

Le type str puisque Python 3.0 contient par défaut des caractères Unicode, ce qui signifie que toute chaîne comme "unicode example", 'unicode example 2' est stockée en Unicode.

Par conséquent, vous pourriez utiliser str.lower() pour convertir n’importe quelle chaîne en minuscules dans Python 3.

exampleString = "CaseString"
exampleString.lower()
#Out: 'casestring'

exampleString = "СтрокаСлучая"
exampleString.lower()
#Out: 'строкаслучая'

str.casefold() conversion en minuscules

str.lower() convertit la chaîne en minuscules, mais il ne convertit pas les distinctions de casse dans la chaîne.

Par exemple, ß en allemand est égal au double s - ss, et ß lui-même est déjà en minuscule, donc, str.lower() ne la convertira pas.

Mais str.casefold() convertira ß en ss.

>>> 'Straße'.lower()
'straße'
>>> 'Straße'.casefold()
'strasse'

Convertir une chaîne de caractères en minuscules en Python 2.7

Le type str en Python 2.7 n’est pas stocké en Unicode, et les chaînes Unicode sont des instances du type unicode. Nous devons distinguer si la chaîne est une chaîne ASCII ou une chaîne unicode lorsque nous convertissons la chaîne en minuscules.

Type ASCII

Il en est de même avec la méthode utilisée en Python 3. str.lower() convertit la chaîne de caractères en minuscules.

exampleString = "CaseStringExample"
exampleString.lower()
#Out: 'casestringexample'

Type unicode

Si les caractères de la chaîne sont de type unicode, et que la chaîne n’est pas explicitement représentée en type unicode, la méthode str.lower() ne convertit pas du tout la chaîne en minuscules.

exampleString = "СтрокаСлучая"
print exampleString.lower()
#Out: СтрокаСлучая

exampleString.lower() == exampleString
#Out: True

Python fait des objets sur des octets non-ASCII dans une chaîne sans codage donné parce que le codage prévu est implicite.

Utiliser des littéraux Unicode mais pas 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: строкаслучая

Vous pouvez voir ici que le premier caractère de la chaîne est converti de \u0421 à \u0441.

Convertissez une str en unicode

Si la chaîne donnée est sous forme de str, nous devons d’abord la convertir en unicode avant de la convertir en minuscules.

exampleString = "СтрокаСлучая"
print exampleString.decode('utf-8').lower()
#Out: строкаслучая

Conclusion

La méthode lower() est la méthode pour convertir une chaîne de caractères en minuscules à la fois en Python 2 et 3, mais avec une différence notable.

string en Python 3 est la chaîne unicode par défaut, mais la chaîne en Python 2 ne l’est pas. Si la chaîne n’est pas explicitement représentée comme étant de type unicode, par exemple en ne mettant pas u avant la chaîne, la chaîne unicode ne sera pas du tout convertie en minuscules.

Le paramètre str.casefold convertit les distinctions de casse en leurs correspondances sans casse, mais n’est disponible qu’en Python 3. Vous pouvez installer py2casefold en Python 2.

Article connexe - Python String

  • Comment convertir une chaîne de caractères en datetime en Python
  • Comment vérifier qu'une chaîne de caractères contient un nombre en python
  • comments powered by Disqus