HTML Quelltext in Tags splitten.

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
Stegi95
User
Beiträge: 12
Registriert: Freitag 29. Oktober 2010, 13:03

Hey Leute

ich suche eine Funktion, welche einen vorher mit urlopen und read ausgelesenen Quelltext in seine Tags aufspaltet. also aus
<html><body><input type=text></body></html>
wird eine Liste wie diese:
['<html>','<body>','<input type=text>','</body>','</html>']

Gibt es sowas? Habs schon mit split('<') versucht, aber da wird ja das < gelöscht...

Bitte helft mir...
Zuletzt geändert von Stegi95 am Samstag 30. Oktober 2010, 09:05, insgesamt 1-mal geändert.
BlackJack

@Stegi95: Was willst Du denn mit den Daten danach anstellen? Für die Verarbeitung von HTML würde ich eher einen HTML-Parser empfehlen statt Zeichenkettenmethoden. Zum Beispiel `lxml.html`.
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

Hallo Stegi95,
mit

Code: Alles auswählen

In [3]: import re
In [4]: re.findall(r'<.+?>', '<html><body><input type=text></body></html>')
Out[4]: ['<html>', '<body>', '<input type=text>', '</body>', '</html>']
erreichst du genau das. Ich glaube aber das ist nicht was du willst (siehe Blackjack).

Gruß
Whitie
Stegi95
User
Beiträge: 12
Registriert: Freitag 29. Oktober 2010, 13:03

War eigentlich nur aus Neugierde ;)

Hat geklappt...danke :D
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Fürchtet Euch vor Cthulhu!
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

pillmuncher hat geschrieben:Fürchtet Euch vor Cthulhu!
:-) Nice one!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Da sage ich nur "Cthulhu fhtagn".

Das hier ist für XML-Tags gut genug:

Code: Alles auswählen

s = '<hallo a=">"></hallo>'
print(re.findall('''<(?:[^'">]|"[^"]*"|'[^']*')+>''', s))
Da XML ein > auch in den Attributwerten erlaubt, muss der reguläre Ausdruck ein bisschen komplizierter sein. Da aber das Finden von Tags keine Schachtelung beachten muss, die mit einer regulären Sprache nicht ausdrückbare wäre, spricht nichts gegen die Allzweckwaffe "re".

Stefan
BlackJack

@sma: Sicher? Was ist mit Kommentaren!? Und CDATA?
Antworten