Suchen und ersetzten von Umlauten

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.
Antworten
Mortorq
User
Beiträge: 5
Registriert: Samstag 26. April 2014, 23:19

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mortorq hat geschrieben:Ich wuerde gerne Texte einlesen und innerhalb dieser Texte saemtliche Umlaute sowie diverse Sonderzeichen durch die passenden HTML Ausdruecke ersetzen.
Ich stelle mal kurz die wichtige W-Frage: Warum willst Du das tun? (Du meinst schon Ä für Ä usw. ‽)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Mortorq
User
Beiträge: 5
Registriert: Samstag 26. April 2014, 23:19

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
BlackJack

@Mortorq: Wenn man die Kodierung richtig angibt, braucht man sich um so etwas nicht mehr kümmern.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Mortorq
User
Beiträge: 5
Registriert: Samstag 26. April 2014, 23:19

Hey super! WIeder etwas dazugelernt! Also sollte in meinem fall einfach der zusatz

Code: Alles auswählen

<meta charset="iso-8859-1">
pro HTML Datei die korrekte darstellung der Umlaute garantieren?
BlackJack

@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?
Mortorq
User
Beiträge: 5
Registriert: Samstag 26. April 2014, 23:19

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..
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mortorq hat geschrieben:Das kann ich gar nicht so genau sagen.
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 sind :-)

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
Mortorq
User
Beiträge: 5
Registriert: Samstag 26. April 2014, 23:19

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
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
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.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

So geht's mit regulären Ausdrücken:

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)
Du kannst, wenn Du willst, noch vielen weiteren Zeichen lustige Namen geben: http://de.selfhtml.org/html/referenz/zeichen.htm
BlackJack

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
Antworten