teddyber wrote: > here's the solution i have for the moment : > > t = shlex.shlex(data) > t.wordchars = t.wordchars + "/+.-" > r='' > while 1: > token = t.get_token() > if not token: > break > if not token==',': r = r+token > else: r = r + ' ' > self.DEBUG(r,'ok') > for pair in r.split(' '): > key,value=pair.split('=', 1) > print(key+':'+value) > > i know this is not perfect still but i'm coming a long way from very > bad php habits! :o) > and thanks for your help! > > On 11 jan, 23:30, teddyber <[EMAIL PROTECTED]> wrote: >> wow! that's perfect this shlex module! thanks for pointing this! >> >> On 11 jan, 20:36, Joshua Kugler <[EMAIL PROTECTED]> wrote: >> >>> teddyber wrote: >>>> first i'm a newbie to python (but i searched the Internet i swear). >>>> i'm looking for some way to split up a string into a list of pairs >>>> 'key=value'. This code should be able to handle this particular >>>> example string : >>>> qop="auth,auth-int,auth-conf",cipher="rc4-40,rc4-56,rc4,des, >>>> 3des",maxbuf=1024,charset=utf-8,algorithm=md5-sess >>>> i know i can do that with some regexp (i'm currently trying to learn >>>> that) but if there's some other way... >>> Take a look at the shlex module. You might be able to fiddle with the shlex >>> object and convince it to split on the commas. But, to be honest, that >>> above would be a lot easier to parse if the dividing commas were spaces >>> instead. >>> j >
Maybe you like : >>> x = 'qop = "auth,auth-int,auth-conf",cipher="rc4-40,rc4-56,rc4,des, 3des",maxbuf=1024,charset=utf-8,algorithm=md5-sess' >>> dict(zip([k[-1].strip() for k in (j.split(',') for j in ''.join(i for i in x if i != '"').split('='))][:-1], [k[:-1] or k for k in (j.split(',') for j in ''.join(i for i in x if i != '"').split('='))][1:])) {'maxbuf': ['1024'], 'cipher': ['rc4-40', 'rc4-56', 'rc4', 'des', ' 3des'], 'charset': ['utf-8'], 'algorithm': ['md5-sess'], 'qop': [' auth', 'auth-int', 'auth-conf']} -- http://mail.python.org/mailman/listinfo/python-list