Seite 1 von 1

regex frage

Verfasst: Dienstag 12. April 2011, 16:47
von dirtylion
hi,
Ich bin gerade dabei ein kleines get cover script zu bauen was anhand des titels das cover downloaded..
das ganze ist für die dreambox (enigma2) und bezieht sich auf die dreambox eigenen aufnahmen.

ich versuche seit ein paar stunden etwas zu parsen.. leider ohne erfolgt.

Code: Alles auswählen

import re
moviename = "/media/hdd/movie/penter_pan_xvid.ts"

if re.match('.*?.ts', moviename, re.IGNORECASE):
        parsen = re.compile('/(.*?).ts', re.IGNORECASE)
        movie_name = parsen.findall(moviename)
        print "Titel:", movie_name

output: Titel: media/hdd/movie/penter_pan_xvid

eigentlich will ich nur penter_pan_xvid.ts als output bekommen :(

mit einem regsub /media/hdd/movie/ ist es leider nicht getan denn die filme liegen auch in subdir

d.h:
/media/hdd/movie/test/ok/penter_pan_xvid.ts
/media/hdd/movie/test/penter_pan_xvid.ts
/media/hdd/movie/super/ok/noch_mehr/penter_pan_xvid.ts

Eine weitere frage die mich beschäftigt ein lösung weg zur erkennung von mehreren file formaten d.h
wenn *.ts *.avi *.mkv als endung vorkommt sollte er in die if funktion reinspringen..

mit dem lösungsweg geht es leider nicht :(

if re.match('.*?.ts|.*?.avi|.*?.mkv', moviename, re.IGNORECASE):

für eine hilfe wäre ich euch sehr dankbar

Re: regex frage

Verfasst: Dienstag 12. April 2011, 16:55
von EyDu
Man kann sich natürlich mit regulären Ausdrücken rumschlagen ...

Code: Alles auswählen

>>> import os.path
>>> os.path.basename("/foo/bar/baz/spam.eggs")
'spam.eggs'
Für dich könnte auch noch das glob-Modul interessant sein.

Sebastian

Re: regex frage

Verfasst: Dienstag 12. April 2011, 17:02
von BlackJack
@dirtylion: Für das zweite Problem kannst Du auch einfach die `endswith()`-Methode auf Zeichenketten verwenden.

Re: regex frage

Verfasst: Dienstag 12. April 2011, 17:06
von dirtylion
so ?
if re.match('(.*?.ts|.*?.avi|.*?.mkv)', moviename, re.IGNORECASE):

Re: regex frage

Verfasst: Dienstag 12. April 2011, 17:12
von EyDu

Code: Alles auswählen

>>> "/foo/bar/baz/spam.eggs".endswith(".eggs")
True
>>> "/foo/bar/baz/spam.eggs".endswith(".dogs")
False

Re: regex frage

Verfasst: Dienstag 12. April 2011, 17:14
von dirtylion
DANKE an alle !

Re: regex frage

Verfasst: Dienstag 12. April 2011, 17:33
von dirtylion

Code: Alles auswählen

import os.path
moviename = "/media/hdd/movie/penter_pan_xvid.ts"

if moviename.endswith(('.ts','.avi','.mkv','.iso')):
        moviename = os.path.basename(moviename)
        print "Titel:", moviename
gibt es noch eine weg das endswith mit Case Insensitive arbeitet ?

mit re.IGNORECASE oder (i) komme ich leider nicht weiter :(

Re: regex frage

Verfasst: Dienstag 12. April 2011, 17:41
von EyDu

Code: Alles auswählen

>>> "test.EGGS".lower().endswith(".eggs")
True
;-)