Comment convertir une chaîne de caractères en minuscules, en Python

y a-t-il un moyen de convertir une chaîne de majuscules, ou même une partie de majuscules en minuscules?

E. G. Kilomètres -- > kilomètres.

1561
demandé sur codeforester 2011-07-23 07:08:53

7 réponses

s = "Kilometer"
print(s.lower())

la documentation officielle est str.lower() .

2432
répondu Petar Ivanov 2016-10-30 21:52:24

avec Python 2, cela ne fonctionne pas pour les mots non-anglais en UTF-8. Dans ce cas decode('utf-8') peut aider:

>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
162
répondu Vladimir Gorovoy 2018-04-21 11:41:57

comment convertir une chaîne de caractères en minuscules en Python?

y a-t-il un moyen de convertir une chaîne entière entrée par un utilisateur de uppercase, ou même une partie de uppercase en lowercase?

E. G. Kilomètres -- > kilomètres

canoniques Pythonic façon de le faire est

>>> 'Kilometers'.lower()
'kilometers'

cependant, si le but est de faire l'appariement insensible à la casse, vous devez utiliser cas de pliage:

>>> 'Kilometers'.casefold()
'kilometers'

Voici pourquoi:

>>> "Maße".casefold()
'masse'
>>> "Maße".lower()
'maße'
>>> "MASSE" == "Maße"
False
>>> "MASSE".lower() == "Maße".lower()
False
>>> "MASSE".casefold() == "Maße".casefold()
True

c'est une méthode str En Python 3, mais en Python 2, vous voudrez regarder le PyICU ou py2casefold - plusieurs réponses s'adressent à ce ici .

Unicode Python 3

Python 3 gère l'unicode comme régulière chaînes:

>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'

Unicode Python 2

mais Python 2 n'encode pas, le dessous, collé dans un shell, le littéral comme une chaîne d'octets, en utilisant utf-8 .

et lower ne correspond à aucun changement connu par les objets natifs Unicode, nous obtenons donc la même chaîne de caractères.

>>> string = 'Километр'
>>> string
'\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> string.lower()
'\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> print string.lower()
Километр

dans les scripts, Python s'objectera aux octets non-ascii (à partir de python 2.5, et warning en Python 2.4) étant dans une chaîne sans encodage étant donné que le codage prévu serait ambigu. Pour plus d'informations sur ce sujet, voir L'Unicode how-to dans les docs et PEP 263

Utiliser l'Unicode des littéraux, pas str littéraux

nous avons donc besoin d'une chaîne de caractères unicode pour gérer cette conversion, effectuée facilement avec un Unicode littéral:

>>> unicode_literal = u'Километр'
>>> print unicode_literal.lower()
километр

notez que les octets sont complètement différents de la str octets - le caractère d'échappement est '\u' , suivi par les 2 octets largeur, ou 16 bits de la représentation de ces unicode lettres:

>>> unicode_literal
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> unicode_literal.lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'

maintenant si nous l'avons seulement sous la forme d'un str , nous devons le convertir en unicode . Le type Unicode de Python est un format d'encodage universel qui a de nombreux avantages par rapport à la plupart des autres encodages. Nous pouvons utiliser le constructeur unicode ou str.decode " méthode avec le codec pour convertir le str en unicode :

>>> unicode_from_string = unicode(string, 'utf-8') # "encoding" unicode from string
>>> print unicode_from_string.lower()
километр
>>> string_to_unicode = string.decode('utf-8') 
>>> print string_to_unicode.lower()
километр
>>> unicode_from_string == string_to_unicode == unicode_literal
True

les deux méthodes se convertissent au type unicode - et sont identiques à unicode_literal.

meilleure pratique, utiliser Unicode

il est recommandé que vous toujours travailler avec le texte en Unicode .

le Logiciel ne doit fonctionner qu'avec des chaînes Unicode internes, en se convertissant à un particulier encodage sur la sortie.

peut encoder en arrière si nécessaire

Cependant, pour obtenir la minuscule de nouveau dans le type str , encodez la chaîne de python à utf-8 encore une fois:

>>> print string
Километр
>>> string
'\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> string.decode('utf-8')
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> string.decode('utf-8').lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> string.decode('utf-8').lower().encode('utf-8')
'\xd0\xba\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80'
>>> print string.decode('utf-8').lower().encode('utf-8')
километр

ainsi, en Python 2, Unicode peut encoder dans des chaînes Python, et les chaînes Python peuvent décoder dans le type Unicode.

113
répondu Aaron Hall 2018-04-11 16:39:59

vous pouvez faire ce que Pierre a dit , ou si vous voulez que l'utilisateur entre quelque chose vous pouvez faire le code ci-dessous:

raw_input('Type Something').lower()

il convertira alors automatiquement la chaîne qu'ils ont tapée en minuscules.

Note: raw_input a été renommé en input en Python 3.x et au-dessus.

71
répondu U9-Forward 2018-07-04 10:47:45

vous pouvez aussi écraser certaines variables:

s = input('UPPER CASE')
lower = s.lower()

si vous utilisez comme ceci:

s = "Kilometer"
print(s.lower())     - kilometer
print(s)             - Kilometer

ça marchera quand on l'appellera.

19
répondu ergo 2017-10-08 07:27:35

string.lower() est utilisé pour transformer une chaîne en minuscule string.

par exemple:

word = "Turn Th!S !nt0 a L0w3rCas3! $string"
print(word.lower())

Dans ce cas, tous les alphabets seront convertis en minuscules alphabets.

0
répondu Zeeshan Adil 2018-07-16 12:12:09

si le texte entier est en majuscules comme "kilomètre", et que vous voulez seulement que le premier caractère soit en minuscules, alors faites

text = "KILOMETER"
result = text[:1] + text[1:].lower() 
print(result)

mais pour réduire la chaîne entière, faire

text = "KILOMETER"
text = text.lower()
print(text)
-2
répondu Supercolbat 2017-07-01 17:17:50