Seite 1 von 1

Regular Expression

Verfasst: Samstag 8. März 2008, 16:53
von da-ker
Hallo, hab zwar schon alte Beiträge durchstöbert aber noch keine passende Lösung für mein (ja es ist warscheinlich sehr banal) gefunden habe.

hab diesen string hier und will daraus:

<img src="/icons/text.gif" alt="[TXT]"> <a href="test.txt">test.5..></a> 14-Feb-2008 12:58 2.1K

zum Beispiel dass Datum oder die Uhrzeit rausschneiden.

die Funktion

re.sub auf den oberen string schneidet mir zwar dass richtige raus, aber dass ist ja nicht sinn und zweck..... also ich will quasi alles raushauen ohne das Datum/Uhrzeit/regex...gibts da ne passende methode, steh irgendwieviel voll aufm schlauch,



Danke schonmal, Gruß

Verfasst: Samstag 8. März 2008, 17:52
von Leonidas
Also HTML so zu parsen kannst du ziemlich vergessen. Nimm lieber BeautifulSoup oder html5lib.

Verfasst: Samstag 8. März 2008, 18:06
von da-ker
ja ich weiß dass das nicht unbedingt das schönste ist, aber wie gesagt brauch nur das Datum/Uhrzeit aus diesem einen string.

gibts da keine "einfache" möglichkeit?

Verfasst: Samstag 8. März 2008, 18:58
von BlackJack
Naja, eben einfach einen regulären Ausdruck dafür schreiben und dann `re.search()` damit verwenden.

Verfasst: Samstag 8. März 2008, 20:16
von da-ker
ah fein, danke!.... steh wirklich aufn schlauch heut... :P

Verfasst: Sonntag 9. März 2008, 12:08
von sma
Mein Vorschlag:

Code: Alles auswählen

re.findall(r'(\d\d-\w\w\w-\d\d\d\d \d\d:\d\d) \d+(?:.\d+)?K', text)
Wenn's genauer treffen soll, nimm eine Liste aller Monatsnamen `(?:Jan|Feb|...)` statt `\w\w\w`.

Stefan

Verfasst: Sonntag 9. März 2008, 14:16
von Oscar
Hi,
wenn die Struktur immer gleich ist und ich da nichts falsch verstanden habe,
dann müßte das doch auch (ohne re) so gehen:

Code: Alles auswählen

a = '<img src="/icons/text.gif" alt="[TXT]"> <a href="test.txt">test.5..></a> 14-Feb-2008 12:58 2.1K'
>>> b = len(a) -10
>>> c = a[b:b+5]
>>> c
'12:58' 
was in diesem Fall die Uhrzeit rausschneidet.
Gruß Oscar

Verfasst: Sonntag 9. März 2008, 15:01
von BlackJack
Nur mal so geraten ist das '2.1 K' am Ende eine Grössenangabe einer Datei und damit wahrscheinlich in der Länge nicht fest.

Verfasst: Sonntag 9. März 2008, 15:08
von Hyperion
Oscar hat geschrieben:Hi,
wenn die Struktur immer gleich ist und ich da nichts falsch verstanden habe,
dann müßte das doch auch (ohne re) so gehen:

Code: Alles auswählen

a = '<img src="/icons/text.gif" alt="[TXT]"> <a href="test.txt">test.5..></a> 14-Feb-2008 12:58 2.1K'
>>> b = len(a) -10
>>> c = a[b:b+5]
>>> c
'12:58' 
was in diesem Fall die Uhrzeit rausschneidet.
Gruß Oscar
Und wenn Die Dateigröße mehr als 4 Zeichen einnimmt?

Verfasst: Sonntag 9. März 2008, 17:15
von wirdbald
Hier lässt sich aber auch gut mit einfachen splits arbeiten, wenn die Struktur wirklich immer gleich bleibt.

Code: Alles auswählen

s = '<img src="/icons/text.gif" alt="[TXT]"> <a href="test.txt">test.5..></a> 14-Feb-2008 12:58 2.1K'

s = s.split("</a>")[1]
s = s.strip()

# s ist jetzt '14-Feb-2008 12:58 2.1K'.

datum, uhrzeit, rest = s.split(" ",3)
Oder, ums kurz zu machen :D

Code: Alles auswählen

datum, uhrzeit, rest = s.split("</a>")[1].strip().split(" ",3)