You could use regular expressions... it's an FSM of some kind but it's faster *g* check this snippet out:
def mysplit(s): pattern = '((?:"[^"]*")|(?:[^ ]+))' tmp = re.split(pattern, s) res = [ifelse(i[0] in ('"',"'"), lambda:i[1:-1], lambda:i) for i in tmp if i.strip()] return res >>> mysplit('foo bar "baz foo" bar "baz"') ['foo', 'bar', 'baz foo', 'bar', 'baz'] -- http://mail.python.org/mailman/listinfo/python-list