import regex r=regex.compile('[ \t\n]*' # Skip leading whitespace '\(' # Two alternative token # styles '\([^ \n\t"\'][^ \t\n]*\)'# A non-quotemark or WS # character, up to the next # whitespace '\|' # or '\("[^"]*"\)' # A double quote, followed # by non-quotes, ending with # another double quote '\|' # or "\('[^']*'\)" # A single quote, followed # by non-quotes, ending with # another single quote '\)' # End of the alternatives ) rl=regex.compile('[ \t\n]*' # Skip leading whitespace '\(' # Two alternative token # styles '\([^ \n\t"\'][^,]*\)' # A non-quotemark or WS # character, up to the next # comma '\|' # or '\("[^"]*"\)' # A double quote, followed # by non-quotes, ending with # another double quote '\|' # or "\('[^']*'\)" # A single quote, followed # by non-quotes, ending with # another single quote '\)' # End of the alternatives ) def qsplit(s): lst=[] ; pos=0 while (s!=""): res=r.match(s, pos) if res==-1: break lst.append(r.group(1)) pos=r.regs[0][1] return lst def qsplit_list(s): lst=[] ; pos=0 while (s!="" and pos < len(s)): res=rl.match(s, pos) if res==-1: break lst.append(rl.group(1)) pos=rl.regs[0][1]+1 return lst