split parameter line with quotes
Ricardo Aráoz
ricaraoz at gmail.com
Mon Jan 14 13:09:07 EST 2008
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 <teddy... at gmail.com> wrote:
>> wow! that's perfect this shlex module! thanks for pointing this!
>>
>> On 11 jan, 20:36, Joshua Kugler <jkug... at bigfoot.com> 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']}
More information about the Python-list
mailing list