Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
__deets__ hat geschrieben: ↑Mittwoch 8. April 2020, 10:06
Das funktioniert schon, aber weil Strings in Python unveraenderlich sind, musst du das Ergebnis auch zuweisen. Es wird nicht in-place gemacht.
Super danke, nur "lower()" funktioniert in Python2 mit den "großen" Umlauten nicht
diese habe explizit nochmals ersetzen müssen.
Das funktioniert auch mit Python2, Du darfst halt keine Byte-Strings benutzen, sondern mußt Unicode verwenden (wie in Python3).
Python2 ist aber veraltet und sollte nicht mehr verwendet werden.
Du solltest kein Python 2 mehr benutzen, das seit dieses Jahres ungewartet. Neuer Code sollte in Python 3 geschrieben sein. Und da zumindest geht das auch fuer mich:
10:12 $ python3
Python 3.7.3 (default, Oct 7 2019, 12:56:13)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> s = 'ü'
>>> s.upper()
'Ü'
>>> s.upper().lower()
'ü'
__deets__ hat geschrieben: ↑Mittwoch 8. April 2020, 10:16
Du solltest kein Python 2 mehr benutzen, das seit dieses Jahres ungewartet. Neuer Code sollte in Python 3 geschrieben sein. Und da zumindest geht das auch fuer mich:
10:12 $ python3
Python 3.7.3 (default, Oct 7 2019, 12:56:13)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> s = 'ü'
>>> s.upper()
'Ü'
>>> s.upper().lower()
'ü'
Da stimmte ich mit Dir vollkommen überein. Aber ich habe das Projekt auch nur übernommen und muss mich hier leider an die Vorgaben (Python2) halten. - wer fährt schon freiwillig ein rostiges Auto?
@Torsten.E: Man sollte in Python 2 konsequent darauf achten `str` nicht für Text zu verwenden sondern `unicode`. Am besten fängst Du auch gleich damit an Zeichenkettenliterale mit Text mit einem u zu markieren, und welche mit Binärdaten mit b. Mindestens bei neuem Code oder welchem den man verändert. Damit man irgendwann auch mal von dem rostigen Auto weg kommen kann.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Wenn es nur um einzelne kürzere Zeichenketten und nur um diese paar Zeichen geht, sind die Ersetzungen okay. Wenn es um größere Mengen geht und/oder wenn man auch andere Normalisierungen oder Zeichen braucht, bietet sich das PyICU Paket an.
In [1]: import icu
In [2]: transliterator = icu.Transliterator.createInstance('de-ascii; lower')
In [3]: transliterator.transliterate('Ä Ö Ü ä ö ü ß ł ŧ ø þ æ ſ ð đ ŋ ħ ĸ Ł Ŧ Ø Þ Æ ẞ Ð Ŋ Ħ')
Out[3]: 'ae oe ue ae oe ue ss l t o th ae s d d n h q l t o th ae ss d n h'