items = s.replace(' (', '(').replace(', ',',').split() items_dict = dict() for item in items: if '(' not in item: item += '(0,0)' if ',' not in item: item = item.replace(')', ',0)')
name, raw_data = item.split('(') data_tuple = tuple((int(v) for v in raw_data.replace(')','').split(','))) items_dict[name] = data_tuple 2015-09-30 20:58 GMT-07:00 Emile van Sebille <em...@fenx.com>: > On 9/30/2015 12:20 PM, Tim Chase wrote: > >> On 2015-09-30 11:34, massi_...@msn.com wrote: >> > <snip> > >> I guess this problem can be tackled with regular expressions, b >>> >> ... However, if you *want* to do it with >> >> regular expressions, you can. It's ugly and might be fragile, but >> >> ############################################################# >> import re >> s = "name1 name2(1) name3 name4 (1, 4) name5(2) ..." >> r = re.compile(r""" >> \b # start at a word boundary >> (\w+) # capture the word >> \s* # optional whitespace >> (?: # start an optional grouping for things in the parens >> \( # a literal open-paren >> \s* # optional whitespace >> (\d+) # capture the number in those parens >> (?: # start a second optional grouping for the stuff after a >> comma >> \s* # optional whitespace >> , # a literal comma >> \s* # optional whitespace >> (\d+) # the second number >> )? # make the command and following number optional >> \) # a literal close-paren >> )? # make that stuff in parens optional >> """, re.X) >> d = {} >> for m in r.finditer(s): >> a, b, c = m.groups() >> d[a] = (int(b or 0), int(c or 0)) >> >> from pprint import pprint >> pprint(d) >> ############################################################# >> > > :) > > >> I'd stick with the commented version of the regexp if you were to use >> this anywhere so that others can follow what you're doing. >> > > ... and this is why I use python. That looks too much like a hex sector > disk dump rot /x20. :) > > No-really-that's-sick-ly yr's, > > Emile > > > > > -- > <https://mail.python.org/mailman/listinfo/python-list> > https://mail.python.org/mailman/listinfo/python-list >
-- https://mail.python.org/mailman/listinfo/python-list