Seite 1 von 1

string filtern

Verfasst: Dienstag 16. Mai 2006, 17:57
von Rasti
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.

Verfasst: Dienstag 16. Mai 2006, 18:26
von Leonidas

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>')
*grml*, das war irgendwo im Wiki, ich finds jetzt auch grad nicht.

Verfasst: Dienstag 16. Mai 2006, 21:26
von Rasti
Super. Einfach genial.
Genau das was ich gesucht habe.
Danke

Verfasst: Montag 29. Mai 2006, 22:24
von Rasti
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.

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)
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

Verfasst: Dienstag 30. Mai 2006, 13:19
von Leonidas
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.

Verfasst: Dienstag 30. Mai 2006, 14:04
von jens
@Rasti: Schau dir mal BeautifulSoup an ;)

Verfasst: Dienstag 30. Mai 2006, 23:12
von Rasti
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.

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)
Danke nochmals