Hi, I have a set of strings that are *basically* comma separated, but with the exception that if a comma occur insides curly braces it is not a delimiter. Here's an example:
[code=one, caption={My Analysis for \textbf{t}, Version 1}, continued] I'd like to parse that into a dictionary (note that 'continued' gets the value 'true'): {'code':'one', 'caption':'{My Analysis for \textbf{t}, Version 1}','continued':'true'} I know and love pyparsing, but for this particular code I need to rely only on the standard library (I'm running 2.7). Here's what I've got, and it works. I wonder if there's a simpler way? thanks, --Tim Arnold The 'line' is like my example above but it comes in without the ending bracket, so I append one on the 6th line. def parse_options(line): options = dict() if not line: return options active = ['[','=',',','{','}',']'] line += ']' key = '' word = '' inner = 0 for c in list(line): if c in active: if c == '{': inner +=1 elif c == '}': inner -=1 if inner: word += c else: if c == '=': (key,word) = (word,'') options[key.strip()] = True elif c in [',', ']']: if not key: options[word.strip()] = True else: options[key.strip()] = word.strip() (key,word) = (False, '') else: word += c return options -- http://mail.python.org/mailman/listinfo/python-list