Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 2nd, 2012  |  syntax: None  |  size: 1.46 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Using regex in python to get episode numbers from file name
  2. def getEpisode(filename):
  3.     matches = re.findall(r"e[0-9][0-9]", filename)
  4.     if len(matches) == 1:
  5.         episode = matches[0]
  6.         episode = stripEp(episode)
  7.         return episode  
  8.     else:
  9.         return False
  10.  
  11. def stripEp(target):
  12.     target = target.strip()
  13.     target = target.strip('abcdefghijklmnopqrstuvwxyz.')
  14.     return target
  15.        
  16. 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)
  17.        
  18. Series Name s01e01.avi
  19.  
  20. Series Name 1x01.avi
  21.  
  22. Series Name episode 01.avi
  23.  
  24. 01 Episode Title.avi
  25.        
  26. def getEpisode(filename):
  27.     match = re.search(
  28.         r'''(?ix)                 # Ignore case (i), and use verbose regex (x)
  29.         (?:                       # non-grouping pattern
  30.           e|x|episode|^           # e or x or episode or start of a line
  31.           )                       # end non-grouping pattern
  32.         s*                       # 0-or-more whitespaces
  33.         (d{2})                   # exactly 2 digits
  34.         ''', filename)
  35.     if match:
  36.         return match.group(1)
  37.  
  38. tests = (
  39.     'Series Name s01e01.avi',
  40.     'Series Name 1x01.avi',
  41.     'Series Name episode 01.avi',
  42.     '01 Episode Title.avi'
  43.     )
  44. for filename in tests:
  45.     print(getEpisode(filename))
  46.        
  47. 01
  48. 01
  49. 01
  50. 01
  51.        
  52. re.findall(r"(?:e|x|episode|n)(d{2})", filename, re.I)
  53.        
  54. re.findall(r"(?:s|season)(d{2})(?:e|x|episode|n)(d{2})", filename, re.I)