def split_people(s, splitters=["/", "&", ","]): title, subtitle = find_subtitle(s) if not subtitle: parts = s.split(" ") if len(parts) > 2: for feat in __FEATURING: try: i = [p.lower() for p in parts].index(feat) orig = " ".join(parts[:i]) others = " ".join(parts[i+1:]) return (orig, split_value(others, splitters)) except (ValueError, IndexError): pass return (s, []) else: old = subtitle # TODO: allow multiple substitutions across types, maybe for regex in (__FEAT_REGEX + __ORIG_REGEX): subtitle = re.sub(regex, "", subtitle, 1) if old != subtitle: # Only change once break values = split_value(subtitle, splitters) return (title.strip(), values)
def split_title(s, splitters=["/", "&", ","]): title, subtitle = find_subtitle(s) return ((title.strip(), split_value(subtitle, splitters)) if subtitle else (s, []))