konnte man in einem String nicht mehrer Zeichen gleichzeitig ersetzen?
Code: Alles auswählen
line=line.replace("ä","ae")
line=line.replace("Ä","Äe")
line=line.replace("ö","oe")
line=line.replace("Ö","oe")
Grüße
D
Code: Alles auswählen
line=line.replace("ä","ae")
line=line.replace("Ä","Äe")
line=line.replace("ö","oe")
line=line.replace("Ö","oe")
Code: Alles auswählen
line=line.replace("ä","ae").replace("Ä","Äe").replace("ö","oe").replace("Ö","oe")
Code: Alles auswählen
chars = {'ö':'oe','ä':'ae','ü':'ue'} # usw.
line = "Irgendein lästiger, übler, öder Text."
for char in chars:
line = line.replace(char,chars[char])
Code: Alles auswählen
In [2]: len('äöü')
Out[2]: 6
In [3]: len('aou')
Out[3]: 3
Huch. Darauf wär ich mit den Docs aber nie gekommen:BlackJack hat geschrieben:Es kommt nicht darauf an, wie viele Buchstaben Du siehst, sondern mit wie vielen Bytes die kodiert werden. Im Fall von UTF-8 sind's halt zwei Bytes pro Umlaut.
Und vor alle mit dem Beispiel im Tutorial würde ich das mit der obigen Erklärung nie erwarten, dass da die Bytes gezählt werden und nicht die einzelnen Zeichen:len(s)
Return the length (the number of items) of an object. The argument may be a sequence (string, tuple or list) or a mapping (dictionary).
Gibt es da einen Gedanken dahinter, warum man die Bytes "zählt""? Möchte man nicht viel häufiger einfach wissen, wie lang (= aus wie viele Zeichen) ein String ist?The built-in function len() returns the length of a string:
>>> s = 'supercalifragilisticexpialidocious'
>>> len(s)
34
Code: Alles auswählen
>>> mapping = {ord(u"ü"): u"ue", ord(u"ß"): u"ss"}
>>> line = u"Grüß Gott"
>>> print line.translate(mapping)
Gruess Gott