Frage Wie konvertiert man Zeichenfolge in Kleinbuchstaben in Python


Gibt es eine Möglichkeit, eine Zeichenfolge aus Großbuchstaben oder sogar aus Großbuchstaben in Kleinbuchstaben zu konvertieren?

Z.B. Kilometer -> Kilometer.


1480
2017-07-23 03:08


Ursprung


Antworten:


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

Die offizielle Dokumentation ist str.lower().


2325
2017-07-23 03:09



Mit Python 2 funktioniert dies nicht für nicht englische Wörter in UTF-8. In diesem Fall decode('utf-8') kann helfen:

>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр

158
2017-10-03 08:02



Wie konvertiert man Zeichenfolge in Kleinbuchstaben in Python?

Gibt es eine Möglichkeit, eine gesamte vom Benutzer eingegebene Zeichenfolge von Großbuchstaben oder sogar von Großbuchstaben in Kleinbuchstaben umzuwandeln?

Z.B. Kilometer -> Kilometer

Die kanonische pythonische Art, dies zu tun, ist

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

Wenn Sie jedoch die Groß- / Kleinschreibung nicht beachten möchten, sollten Sie Groß- / Kleinschreibung beachten:

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

Hier ist der Grund:

>>> "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

Dies ist eine Str-Methode in Python 3, aber in Python 2 sollten Sie sich die PyICU oder py2casefold ansehen - mehrere Antworten sprechen hier an.

Unicode Python 3

Python 3 handhabt Unicode als reguläre Zeichenfolgen:

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

Unicode Python 2

Aber Python 2 nicht, die unten in eine Shell eingefügt, codiert das Literal als eine Zeichenfolge von Bytes mit utf-8.

Und lower Es werden keine Änderungen zugeordnet, die native Unicode-Objekte kennen würden. Daher erhalten wir die gleiche Zeichenfolge.

>>> 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()
Километр

In Skripten wird Python gegen Nicht-ASCII-Zeichen (ab Python 2.5 und Warnung in Python 2.4) in einer Zeichenfolge ohne codierte Codierung einwenden, da die beabsichtigte Codierung mehrdeutig wäre. Mehr dazu finden Sie in der Unicode-Anleitung in der Dokumente und PEP 263

Verwenden Sie Unicode-Literale nicht str Literale

Also brauchen wir einen unicode String, um diese Konvertierung zu handhaben, leicht mit einem Unicode-Literal erreicht:

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

Beachten Sie, dass die Bytes sich vollständig von denen unterscheiden str Bytes - das Escape-Zeichen ist '\u' gefolgt von der 2-Byte-Breite oder 16-Bit-Darstellung von diesen unicode Briefe:

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

Nun, wenn wir es nur in Form von a haben strWir müssen es in konvertieren unicode. Pythons Unicode-Typ ist ein universelles Kodierungsformat, das viele hat Vorteile relativ zu den meisten anderen Kodierungen. Wir können entweder die unicode Konstruktor oder str.decode Methode mit dem Codec zum Konvertieren der str zu 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

Beide Methoden konvertieren in den Unicode-Typ - und dasselbe wie das Unicode-Literal.

Best Practice, verwenden Sie Unicode

Es wird empfohlen, dass Sie immer arbeite mit Text in Unicode.

Software sollte intern nur mit Unicode-Zeichenfolgen arbeiten und bei der Ausgabe in eine bestimmte Codierung konvertieren.

Kann bei Bedarf zurück codieren

Um jedoch den Kleinbuchstaben in Typ zurück zu bekommen str, kodiere die Python-Zeichenkette zu utf-8 nochmal:

>>> 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')
километр

In Python 2 kann Unicode also in Python-Strings und Python-Strings in den Unicode-Typ decodieren.


104
2017-07-23 22:40



Du kannst was machen Sagte Peteroder wenn Sie möchten, dass der Benutzer etwas eingibt, können Sie den folgenden Code verwenden:

raw_input('Type Something').lower()

Die Zeichenkette wird dann automatisch in Kleinbuchstaben umgewandelt.

Hinweis: raw_inputwurde umbenannt in input in Python 3.x und höher.


70
2017-07-23 04:34



Außerdem können Sie einige Variablen überschreiben:

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

Wenn Sie so vorgehen:

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

Es wird nur funktionieren, wenn es angerufen wird.


17
2017-11-18 18:35



string.lower() wird verwendet, um eine Zeichenfolge in eine Kleinbuchstabenfolge umzuwandeln.

beispielsweise:

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

In diesem Fall werden alle Alphabete in Kleinbuchstaben konvertiert.


0
2017-07-16 12:12



Wenn der gesamte Text Großbuchstaben wie "KILOMETER" ist und Sie möchten, dass nur das erste Zeichen kleingeschrieben wird, dann tun Sie das

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

Aber um die ganze Saite kleinzuhalten, mach es

text = "KILOMETER"
text = text.lower()
print(text)

-1
2018-02-28 22:49