[EMAIL PROTECTED] wrote in news:[EMAIL PROTECTED]:
> lialie: >> The formated file may be very popularly, but the module >> ConfigPaser doesn't handle it. Is there a way to process it >> freely? > > First try, assuming the input file can be read whole. The code > isn't much readable, it needs better variable names (name > names?), comments, etc. > > data = """ > %HEADER > title1 = "Untilted1" > username = "User1" > > %DATA > title2 = "Untilted2" > username2 = "User2" > """ > > l1 = (p.strip().splitlines() for p in data.split("%") if > p.strip()) result = {} > for part in l1: > pairs1 = (pair.split('=') for pair in part[1:]) > pairs2 = ((k.strip(), v.strip().strip('"')) for k,v in pairs1) result[part[0]] = dict(pairs2) > print result > > If there could be embedded perecent signs in the data, that will produce some unexpected results, though. Here's another shot: data = """ %HEADER title1 = "Untilted1" username = "User1" %DATA title2 = "The 7% Solution" username2 = "User2" """ # Assumes there may be embedded percent signs in data # and all data lines are of the form key = value def parseData(data): pd = {} idata = iter(data) for line in idata: line = line.strip() if line.startswith('%'): tname = line[1:] cd = pd[tname] = {} line = idata.next().strip() while line != '': if line.find('=') > 0: id,val = line.split('=',1) cd[id.strip()] = val.strip().strip('"') line = idata.next().strip() return pd print parseData(data.split('\n')) -- http://mail.python.org/mailman/listinfo/python-list