HTML Codes ersetzen/Umwandeln (Auskommentieren)

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
Colombia
User
Beiträge: 5
Registriert: Freitag 22. September 2017, 21:06

Guten Abend,
vorab möchte ich mich bei allen beteiligten Bedanken, die hier eine Anlaufstelle für Fragen und Probleme bieten. Ebenso natürlich auch den Leuten die sich hier Tag täglich an den Diskussionen beteiligen.

Zu meinem Problem: Ich habe einen Code geschrieben, der sich einen bestimmten Entry eines RSS Feeds besorgt und in einem String für die Weiterverarbeitung speichert. Jedoch sind die Umlaute und Zeichen in dem RSS Feed sehr ungünstig.

So sieht aktuell ein String aus:

Code: Alles auswählen

Heute vor 155 Jahren  a; Mit der Emanzipations­proklamation erklärt die Regierung Abraham Lincolns die Abschaffung der Sklaverei in den Süd­staaten – ein entscheidender Schritt zur voll­ständigen Beendigung der Sklaverei in den USA.
Und so sollte es aussehen:

Code: Alles auswählen

Heute vor 155 Jahren – Mit der Emanzipations­proklamation erklärt die Regierung Abraham Lincolns die Abschaffung der Sklaverei in den Süd­staaten – ein entscheidender Schritt zur voll­ständigen Beendigung der Sklaverei in den USA.
Der RSS Feed liefert HTML-Codes mit. Für die Lesbarkeit ist das nicht unbedingt förderlich.
Daher habe ich mit folgendem Code versucht, die Codes durch die Umlaute und Zeichen zu ersetzen.

Code: Alles auswählen

import re
text = <RSSFEED>

wordDic = {
'&#173;' : '', #Zeichen wird durch nichts ersetzt
'&#160;' : '', #Zeichen wird durch nichts ersetzt
}

str2 = multiwordReplace(text, wordDic)

print (str2)


Jedoch wird in Zeile 5 und 6 jeweils ab der Raute der Code auskommentiert.
Folglich wirft der Code Fehler da für Python in den beiden Zeilen nur '& existiert.

Leider reichen meine Kenntnisse nicht um das zu beheben. Könnt ihr mir eventuell über die Schultern schauen?

Viele Grüße und ein schönes Wochende euch :)
__deets__
User
Beiträge: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

Deine Fehlerbeschreibung kann so nicht richtig sein. Selbstverständlich kann man in Python ein #-Zeichen in einem String schreiben. Da wird also nix auskommentiert.

Und du rufst etwas auf, das nicht definiert ist - multiWordReplacement. Insofern ist das weitaus wahrscheinlicher der Fehler.

Bitte poste mal deine vollständige Fehlermeldung. Nicht paraphrasieren.
__deets__
User
Beiträge: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und noch ein Nachtrag: eigentlich benutzt man das hier https://docs.python.org/3/library/html. ... l.unescape um HTML entities zu dekodieren. Das hat auch den Vorteil, da du keine dir unbekannten verdaddelst.
Colombia
User
Beiträge: 5
Registriert: Freitag 22. September 2017, 21:06

Huhu __deets__

ich glaube, du hast mich etwas falsch verstanden.

Der String hat die HTML Codes. Ich will die HTML-Codes in diesem String aber ersetzen. Dafür hab ich (Siehe Zeile 5 und 6) den Code, der eine Zeichenfolge durch eine andere ersetzt. Ich häng dir mal ein Bild an, das vielleicht etwas Klarheit verschafft. https://suckmypic.net/jAuGkc22.jpg <- hier sieht man was auskommentiert wird.
Das multiWordReplacement funktioniert wunderbar, da es bei import re mitgeliefert wird.
Colombia
User
Beiträge: 5
Registriert: Freitag 22. September 2017, 21:06

Nachtrag:
html.unescape(s) ist genau das, was ich brauche. Tausend Dank __deets__!
Damit kann man den Thread eigentlich schon wieder closen. Vielen Dank für die Hilfe!
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Colombia hat geschrieben:Das multiWordReplacement funktioniert wunderbar, da es bei import re mitgeliefert wird.
Daher kommt es definitiv nicht. Außer re selber wird nichts in den Namensraum exportiert.

Selbst wenn man wit dem Import-Mechanismen von Python nicht vertraut ist (was man ändern sollte), so fällt doch zumindest auf, dass diese Funktion auch nicht in der Dokumentation des re-Moduls beschrieben ist und außerdem noch einen Namen hat, der dem Style Guide for Python Code widerspricht. Alleine diese beiden Punkte sprechen schon dagegen, dass die Funktion aus der Python-Standardbibliothek kommt.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wobei PEP8-Einhaltung kein zwingendes Argument dafür ist, dass ein Modul nicht Teil der Stdlib sein kann. Es gibt dort durchaus Stellen, die nicht der PEP8-Konvention entsprechen.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

snafu hat geschrieben:Wobei PEP8-Einhaltung kein zwingendes Argument dafür ist, dass ein Modul nicht Teil der Stdlib sein kann. Es gibt dort durchaus Stellen, die nicht der PEP8-Konvention entsprechen.
Stimmt. Unter Python 2 sind sie mir noch aufgefallen, bei Python 3 habe ich nicht mehr geschaut. Trotzdem sollte die rote Lampe bei so etwas angehen.
Antworten