Hallo zusammen,
ich bin auf ein kleines problemchen gestossen wo ich einfach nicht auf die passende Loesung komme. Folgendes: Ich wuerde gerne Texte einlesen und innerhalb dieser Texte saemtliche Umlaute sowie diverse Sonderzeichen durch die passenden HTML Ausdruecke ersetzen. Am liebsten wuerde ich das ganze elegant per regular expressions loesen aber meine bisherigen Google recherchen haben mir nicht soviel Hoffnung gegeben das sich mein Problem damit gut loesen liesse. Vielleicht hat ja jemand von euch einen guten Loesungsvorschlag
Gruesse,
Mortorq
Suchen und ersetzten von Umlauten
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ich stelle mal kurz die wichtige W-Frage: Warum willst Du das tun? (Du meinst schon Ä für Ä usw. ‽)Mortorq hat geschrieben:Ich wuerde gerne Texte einlesen und innerhalb dieser Texte saemtliche Umlaute sowie diverse Sonderzeichen durch die passenden HTML Ausdruecke ersetzen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Genau, das meine ich. Ich will das tun, weil ich glaube das es doch ganz sinnvoll ist das zutun. Zumindest war es das, als ich angefangen habe mich mit HTML zu beschaeftigen. Ich arbeite da nach dem Motto 'better safe than sorry' aber wenn man dies gar nicht mehr tut bzw. tun sollte haette sich mein Problem ja ganz schnell gelost
Gruesse,
Mortorq
Gruesse,
Mortorq
@Mortorq: Wenn man die Kodierung richtig angibt, braucht man sich um so etwas nicht mehr kümmern.
@Mortorq: als ich Mitte der 90er angefangen habe, HTML zu schreiben, war mein und das allgemeine Verständnis von Zeichenkodierungen noch sehr heterogen. Da machte es Sinn, sich auf Zeichen im ASCII-Bereich zu beschränken. Inzwischen verstehen alle Browser meta-Angaben zum Encoding und man muß sich nur noch darum kümmern, daß die Angaben stimmen.
Hey super! WIeder etwas dazugelernt! Also sollte in meinem fall einfach der zusatz
pro HTML Datei die korrekte darstellung der Umlaute garantieren?
Code: Alles auswählen
<meta charset="iso-8859-1">
@Mortorq: Wenn es tatsächlich *die* Kodierung ist, dann kannst Du es auch weglassen. Hast Du denn irgendwelche tatsächlichen Probleme mit den Texten im Browser?
Das kann ich gar nicht so genau sagen. Ich habe halt von anfang an immer saemtliche Sonderzeichen durch die HTML Ausdruecke ersetzt. Die Kodierung war jetzt die, die ich von der selfHTML Seite entnommen habe. Aber scheint ja 'ne Standard kodierung zu sein, welche ja optional zu sein scheint..
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wenn Du es nicht sagen kannst, kann es keiner Du erstellst doch die Seiten‽ Dann schau doch mal, welche Kodierung in Deinem Editor beim "Speichern Unter" angegeben ist - da Du das offenbar niemals explizit gewählt hast, sollte die vorausgewählte Kodierung wohl die sein, mit der die Seiten gespiechert worden sindMortorq hat geschrieben:Das kann ich gar nicht so genau sagen.
Ich würde heutzutage eigentlich nur noch mit UTF-8 arbeiten - damit hast Du quasi keine Probleme mehr; egal was für Zeichen Du in Deine Seite einbauen willst.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ohje, ohje. Ich bitte vielmals um entschuldigung das ich den Thread hier einstauben lassen habe. Ich habe nun mal mit all meinen Editoren HTML-Files erstellt welche Umlaute enthalten. In Vim ist UTF-8 fest in der vimrc eingetragen. In meinen anderen Editoren/IDEs konnte ich unter 'Save as' keine bestimmte kodierung auf anhieb erkennen, jedoch funktionierte die Darstellung in allen faellen ohne fehler bei der Anzeige. Ich danke also allen Mitgliedern hier, die mir weitergeholfen haben .
Da ja meine eigentliche eigangsfrage nicht beantwortet wurde frage ich an dieser Stelle noch einmal ob evtl. jemand da bescheid weiss und hier Posten mag. Ich werde selbst auch noch die Augen offen halten und hier Posten fuer den Fall das ich etwas gutes rausfinde.
Vielen Dank & Gruesse
Mortorq
Da ja meine eigentliche eigangsfrage nicht beantwortet wurde frage ich an dieser Stelle noch einmal ob evtl. jemand da bescheid weiss und hier Posten mag. Ich werde selbst auch noch die Augen offen halten und hier Posten fuer den Fall das ich etwas gutes rausfinde.
Vielen Dank & Gruesse
Mortorq
Im letzten Jahrtausend habe ich so etwas noch verwendet, aber ich vermute mal, dass niemand mehr diese Konversion macht, da es einfach nicht nötig ist.Mortorq hat geschrieben:Da ja meine eigentliche eigangsfrage nicht beantwortet wurde frage ich an dieser Stelle noch einmal ob evtl. jemand da bescheid weiss und hier Posten mag.
So geht's mit regulären Ausdrücken:
Du kannst, wenn Du willst, noch vielen weiteren Zeichen lustige Namen geben: http://de.selfhtml.org/html/referenz/zeichen.htm
Code: Alles auswählen
NAME_MAP = {
38: 'amp',
}
map_name = lambda ch: NAME_MAP.get(ch) or ('#%d'%ch)
def htmlescape(text):
return re.sub(u'[\0-\x20&"<>\x7f-\U0010ffff]',lambda x: '&%s;'%map_name(ord(x.group(0))), text)
So etwas gibt es schon in der Standardbibliothek:
Code: Alles auswählen
In [11]: htmlentitydefs.codepoint2name[38]
Out[11]: 'amp'
In [12]: len(htmlentitydefs.codepoint2name)
Out[12]: 252