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

Samstag 8. März 2008, 16:53

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
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 8. März 2008, 17:52

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

Samstag 8. März 2008, 18:06

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

Samstag 8. März 2008, 18:58

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

Samstag 8. März 2008, 20:16

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

Sonntag 9. März 2008, 12:08

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

Sonntag 9. März 2008, 14:16

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

Sonntag 9. März 2008, 15:01

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: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Sonntag 9. März 2008, 15:08

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

Sonntag 9. März 2008, 17:15

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