Gibt es eine Möglichkeit, eine Zeichenfolge von Großbuchstaben oder teilweise von Großbuchstaben in Kleinbuchstaben zu konvertieren?
Zum Beispiel "Kilometer" → "Kilometer".
Verwenden Sie .lower()
- Zum Beispiel:
s = "Kilometer"
print(s.lower())
Die offizielle 2.x Dokumentation ist hier: str.lower()
Die offizielle 3.x Dokumentation ist hier: str.lower()
Mit Python 2 funktioniert dies nicht für nicht-englische Wörter in UTF-8. In diesem Fall kann decode('utf-8')
helfen:
>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
Wie konvertiere ich einen String in Python in Kleinbuchstaben?
Gibt es eine Möglichkeit, eine gesamte vom Benutzer eingegebene Zeichenfolge von Großbuchstaben oder sogar einen Teil von Großbuchstaben in Kleinbuchstaben zu konvertieren?
Z.B. Kilometer -> Kilometer
Die kanonische pythonische Art, dies zu tun, ist
_>>> 'Kilometers'.lower()
'kilometers'
_
Wenn Sie jedoch einen Vergleich durchführen möchten, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, sollten Sie case-folding verwenden:
_>>> '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 adressieren dies hier .
Python behandelt einfache String-Literale als Unicode:
_>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'
_
In Python 2 codiert das Folgende, in eine Shell eingefügt, das Literal als Zeichenfolge von Bytes mit utf-8
.
Und lower
ordnet keine Änderungen zu, die den Bytes bekannt wären, sodass wir den gleichen String erhalten.
_>>> 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 widerspricht Python Nicht-ASCII-Bytes (ab Python 2.5 und Warnung in Python 2.4), die sich in einer Zeichenfolge ohne Kodierung befinden. da die beabsichtigte Codierung mehrdeutig wäre. Weitere Informationen hierzu finden Sie in der Unicode-Anleitung in docs und PEP 26
str
LiteraleFür diese Konvertierung benötigen wir also einen unicode
-String, der leicht mit einem Unicode-String-Literal durchgeführt werden kann, das mit einem u
-Präfix eindeutig ist (und das u
-Präfix funktioniert auch in Python 3):
_>>> unicode_literal = u'Километр'
>>> print(unicode_literal.lower())
километр
_
Beachten Sie, dass sich die Bytes vollständig von den str
Bytes unterscheiden - das Escape-Zeichen ist _'\u'
_ gefolgt von der 2-Byte-Breite oder der 16-Bit-Darstellung dieser unicode
Buchstaben:
_>>> unicode_literal
u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
>>> unicode_literal.lower()
u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440'
_
Wenn wir es nur in Form eines str
haben, müssen wir es in unicode
konvertieren. Pythons Unicode-Typ ist ein universelles Codierungsformat, das im Vergleich zu den meisten anderen Codierungen viele Vorteile aufweist. Wir können entweder den Konstruktor unicode
oder die Methode _str.decode
_ mit dem Codec verwenden, um str
in unicode
zu konvertieren:
_>>> 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 werden in den Unicode-Typ konvertiert - und sind mit dem Unicode-Literal identisch.
Es wird empfohlen, immer mit Text in Unicode zu arbeiten .
Software sollte nur intern mit Unicode-Zeichenfolgen arbeiten und bei der Ausgabe in eine bestimmte Codierung konvertieren.
Um den Kleinbuchstaben jedoch wieder in Typ str
zu erhalten, codieren Sie den String pythonerneut in _utf-8
_:
_>>> 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 in Python Zeichenfolgen codieren, und Python Zeichenfolgen können in den Unicode-Typ decodiert werden.
Sie können tun, was sagte Peter , oder wenn Sie möchten, dass der Benutzer etwas eingibt, können Sie den folgenden Code eingeben:
raw_input('Type Something').lower()
Die eingegebene Zeichenfolge wird dann automatisch in Kleinbuchstaben umgewandelt.
Hinweis: raw_input
wurde in Python 3.x und höher in input
umbenannt.
Sie können auch einige Variablen überschreiben:
s = input('UPPER CASE')
lower = s.lower()
Wenn Sie wie folgt verwenden:
s = "Kilometer"
print(s.lower()) - kilometer
print(s) - Kilometer
Es wird nur funktionieren, wenn es aufgerufen wird.
Probieren Sie das nicht aus, empfehlen Sie es nicht weiter:
import string
s='ABCD'
print(''.join([string.ascii_lowercase[string.ascii_uppercase.index(i)] for i in s]))
Ausgabe:
abcd
Da es noch niemand geschrieben hat, können Sie swapcase
verwenden (sodass Großbuchstaben in Kleinbuchstaben umgewandelt werden und umgekehrt) (und diese sollten Sie in Fällen verwenden, in denen ich gerade erwähnt habe (konvertieren von Großbuchstaben in Kleinbuchstaben, Kleinbuchstaben in Großbuchstaben)). :
s='ABCD'
print(s.swapcase())
Ausgabe:
abcd