rzed kirjoitti: > [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: > > > <snip> > >
The solution of bearophile only needs 2 small modifications to handle this: #========================================= data = """ %HEADER title1 = "Untilted1" username = "User1 20 %" %DATA title2 = "Untilted2" username2 = "User2 10 %" """ # Ensure data starts with a newline data = '\n' + data # Split using '\n%' instead of '%' l1 = (p.strip().splitlines() for p in data.split("\n%") 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 #========================================= Cheers, Jussi -- http://mail.python.org/mailman/listinfo/python-list