
Untitled
By: a guest on
May 2nd, 2012 | syntax:
None | size: 1.46 KB | hits: 13 | expires: Never
Using regex in python to get episode numbers from file name
def getEpisode(filename):
matches = re.findall(r"e[0-9][0-9]", filename)
if len(matches) == 1:
episode = matches[0]
episode = stripEp(episode)
return episode
else:
return False
def stripEp(target):
target = target.strip()
target = target.strip('abcdefghijklmnopqrstuvwxyz.')
return target
matches = re.findall(r"(e[0-9][0-9]|E[0-9][0-9]|x[0-9][0-9]|X[0-9][0-9]|episode [0-9][0-9]|Episode [0-9][0-9]|n[0-9][0-9])", filename)
Series Name s01e01.avi
Series Name 1x01.avi
Series Name episode 01.avi
01 Episode Title.avi
def getEpisode(filename):
match = re.search(
r'''(?ix) # Ignore case (i), and use verbose regex (x)
(?: # non-grouping pattern
e|x|episode|^ # e or x or episode or start of a line
) # end non-grouping pattern
s* # 0-or-more whitespaces
(d{2}) # exactly 2 digits
''', filename)
if match:
return match.group(1)
tests = (
'Series Name s01e01.avi',
'Series Name 1x01.avi',
'Series Name episode 01.avi',
'01 Episode Title.avi'
)
for filename in tests:
print(getEpisode(filename))
01
01
01
01
re.findall(r"(?:e|x|episode|n)(d{2})", filename, re.I)
re.findall(r"(?:s|season)(d{2})(?:e|x|episode|n)(d{2})", filename, re.I)