Hello
Hänge da bei einem Problem
Ich möchte aus einem text einen bestimmten string rausfiltern von dem ich nur die Umgebung kenne. Konkret will ich aus einem Html file dynamische Inhalte filtern von denen ich das Umfeld kenne, welches sich nicht verändert.
Bsp.
<a href="http://www.jobkralle.at" target="_blank" class="jobUrl">www.jobkralle.at</a></td>
z.B. will ich nur das zweite "jobkralle.at" rausfiltern.
Gibts es soeine Funktion?
Ich kenne dies von dem set befehl.
string filtern
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Code: Alles auswählen
import re
re.findall(r'>www.(.*?)<', '<a href="http://www.jobkralle.at" target="_blank" class="jobUrl">www.jobkralle.at</a></td>')
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hab jetzt noch ne frage. Suche jetzt schon seit stunden eine Lösung.
Ich will in einem .html file einen text rausfiltern so wie oben. Aber leider brauche ich zum vergleichem mehrere Zeilen. Nur jack ich nicht wie ich die Zeilenumbrüche usw. richtig hinbekomme.
Das sollte er filtern:
<td class="tech_links">Aufbau</td>
<td width="10"></td>
<td class="grau_bg">(.*?)</td>
also so irgenwie hab ichs versucht.
hab hunderte varianten schon ausprobiert...tonnen von text gelesen...ich hab einfach keine Ahnung. Ich bitte um hilfe.
Noch eine kleine zusätzlich Frage: was bedeutet das r bei z.B re.findall(r'blabla
Danke schon mal
Ich will in einem .html file einen text rausfiltern so wie oben. Aber leider brauche ich zum vergleichem mehrere Zeilen. Nur jack ich nicht wie ich die Zeilenumbrüche usw. richtig hinbekomme.
Das sollte er filtern:
<td class="tech_links">Aufbau</td>
<td width="10"></td>
<td class="grau_bg">(.*?)</td>
also so irgenwie hab ichs versucht.
Code: Alles auswählen
re1= re.compile('<td class="tech_links">Aufbau</td><td width="10"></td><td class="grau_bg">(.*?)</td>')
aufbau = re1.findall(content)
Noch eine kleine zusätzlich Frage: was bedeutet das r bei z.B re.findall(r'blabla
Danke schon mal
Jah Rastafari
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Versuch mal beim Compile die Option re.MULTILINE anzugeben. Zeilenbrüche sind \n, die musst du dann in der Expression auch angeben (wobei ich zugeben, das macht manchmal Schwierigkeiten).
Das r vor den Strings bezeichnet Raw-Strings. Weitere Infos findest du mit der Forensuche, das wurde schon mehrmals erklärt.
Das r vor den Strings bezeichnet Raw-Strings. Weitere Infos findest du mit der Forensuche, das wurde schon mehrmals erklärt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
@Rasti: Schau dir mal BeautifulSoup an 

Jawoll es geht
Hab das jetzt so gelöst. Ich weis ist sicher net die feine art aber wie gesagt es geht.
Problem waren irgendwelche Leerräume unsw.
Undurchblickbar diese Regular Expressions. echt org.
Danke nochmals
Hab das jetzt so gelöst. Ich weis ist sicher net die feine art aber wie gesagt es geht.
Problem waren irgendwelche Leerräume unsw.
Undurchblickbar diese Regular Expressions. echt org.
Code: Alles auswählen
# Im content steht ein html string
split = content.split(' ')
content= ''
regex = re.compile(r'\s*(\n|$)')
for i in split:
i = regex.sub("",i)
content = content + i
aufbau = re.findall('<td class="tech_links">Aufbau</td><td width="10"></td><td class="grau_bg">(.*?)</td>',content)
Jah Rastafari