data = (
    'part 1;"this is ; part 2;";\'this is ; part 3\';part 4;this "is ; part" 5'
    )
PATTERN = re.compile('((?:[^;"\']|"[^"]*"|\'[^\']*\')+)')
print(PATTERN.split(data)[1::2])
How to split but ignore separators in quoted strings, in python?