Wie man in Python 2 und 3 eine Zeichenkette in Kleinbuchstaben konvertiert

  1. Zeichenkette in Python 3 in Kleinbuchstaben konvertieren
  2. String in Python 2.7 in Kleinbuchstaben konvertieren
  3. Schlussfolgerung

Zeichenkette in Python 3 in Kleinbuchstaben konvertieren

Der str Typ seit Python 3.0 enthält standardmäßig Unicode Zeichen, d.h. jede Zeichenkette wie "Unicode Beispiel", 'Unicode Beispiel 2' wird als Unicode gespeichert.

Daher können Sie str.lower() verwenden, um jede Zeichenkette in Python 3 in Kleinbuchstaben zu konvertieren.

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

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

str.casefold() caseless

str.lower() konvertiert die Zeichenkette in Kleinbuchstaben, aber es konvertiert nicht die Groß-/Kleinschreibung in der Zeichenkette.

Zum Beispiel ist ß im Deutschen gleich doppeltem s - ss, und ß selbst ist bereits kleingeschrieben, daher wird str.lower() es nicht konvertieren.

Aber str.casefold() wird ß in ss umwandeln.

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

String in Python 2.7 in Kleinbuchstaben konvertieren

Der Typ str wird in Python 2.7 nicht als Unicode gespeichert, und Unicode Strings sind Instanzen vom Typ Unicode. Wir müssen unterscheiden, ob es sich um einen ASCII String oder um einen Unicode String handelt, wenn wir den String in Kleinbuchstaben konvertieren.

ASCII Typ

Genauso ist es mit der in Python 3 verwendeten Methode. str.lower() wandelt den String in Kleinbuchstaben um.

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

unicode typ

Wenn die Zeichen in der Zeichenkette vom Typ unicode sind, und die Zeichenkette nicht explizit vom Typ unicode dargestellt wird, konvertiert die Methode str.lower() die Zeichenkette überhaupt nicht in Kleinbuchstaben.

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

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

Python-Objekte zu Nicht-ASCII-Bytes in einem String mit no-encoding angegeben, weil die beabsichtigte Kodierung implizit ist.

Verwendung von Unicode-Literalen aber nicht 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: строкаслучая

Hier konnte man sehen, dass das erste Zeichen der Zeichenkette von \u0421 in \u0441 umgewandelt wird.

Konvertiere eine Str in Unicode

Wenn der angegebene String in der Form str vorliegt, müssen wir ihn zuerst in Unicode konvertieren, bevor wir ihn in Kleinbuchstaben konvertieren.

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

Schlussfolgerung

Die lower() Methode ist die Methode, um Strings sowohl in Python 2 als auch in Python 3 in Kleinbuchstaben zu konvertieren, aber mit einem merklichen Unterschied.

string in Python 3 ist standardmäßig die Unicode-Zeichenkette, aber string in Python 2 nicht. Wenn die Zeichenkette nicht explizit als Unicode Typ dargestellt wird, z.B. indem kein u vor die Zeichenkette gesetzt wird, wird die Unicode-Zeichenkette überhaupt nicht in Kleinbuchstaben konvertiert.

str.casefold wandelt die Groß- und Kleinschreibung in ihre Übereinstimmung mit der Groß- und Kleinschreibung um, ist aber nur in Python 3 verfügbar. Sie könnten py2casefold in Python 2 installieren.

Verwandter Artikel - Python String

  • Wie man prüft, ob eine Zeichenkette auf pythonische Weise leer ist
  • Wie man Leerzeichen in einem String in Python entfernt
  • comments powered by Disqus