Regular Expression

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
da-ker
User
Beiträge: 7
Registriert: Freitag 2. November 2007, 22:21

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ß
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also HTML so zu parsen kannst du ziemlich vergessen. Nimm lieber BeautifulSoup oder html5lib.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
da-ker
User
Beiträge: 7
Registriert: Freitag 2. November 2007, 22:21

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?
BlackJack

Naja, eben einfach einen regulären Ausdruck dafür schreiben und dann `re.search()` damit verwenden.
da-ker
User
Beiträge: 7
Registriert: Freitag 2. November 2007, 22:21

ah fein, danke!.... steh wirklich aufn schlauch heut... :P
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Oscar
User
Beiträge: 22
Registriert: Dienstag 25. September 2007, 17:57

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
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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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?
wirdbald
User
Beiträge: 4
Registriert: Freitag 29. Februar 2008, 15:06

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