On Mon, 25 Apr 2005 19:40:44 -0700, Jeffrey Froman <[EMAIL PROTECTED]> wrote:
>J. W. McCall wrote: > >> For example, given the string: >> >> 'spam "the life of brian" 42' >> >> I'd want it to return: >> >> ['spam', 'the life of brian', '42'] > >The .split() method of strings can take a substring, such as a quotation >mark, as a delimiter. So a simple solution is: > >>>> x = 'spam "the life of brian" 42' >>>> [z.strip() for z in x.split('"')] >['spam', 'the life of brian', '42'] > >>> x = ' sspam " ssthe life of brianss " 42' >>> [z.strip() for z in x.split('"')] ['sspam', 'ssthe life of brianss', '42'] Oops, note some spaces inside quotes near ss and missing double quotes in result. Maybe (not tested beyond what you see): >>> [r for r in [(i%2 and ['"'+z+'"'] or [z.strip()])[0] for i,z in >>> enumerate(x.split('"'))] if r] or [''] ['sspam', '" ssthe life of brianss "', '42'] >>> x = ' "" "" ' >>> [r for r in [(i%2 and ['"'+z+'"'] or [z.strip()])[0] for i,z in >>> enumerate(x.split('"'))] ifr] or [''] ['""', '""'] >>> x='""' >>> [r for r in [(i%2 and ['"'+z+'"'] or [z.strip()])[0] for i,z in >>> enumerate(x.split('"'))] ifr] or [''] ['""'] >>> x='' >>> [r for r in [(i%2 and ['"'+z+'"'] or [z.strip()])[0] for i,z in >>> enumerate(x.split('"'))] ifr] or [''] [''] >>> [(i%2 and ['"'+z+'"'] or [z.strip()])[0] for i,z in >>> enumerate(x.split('"'))] ['sspam', '" ssthe life of brianss "', '42'] Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list