i know this is some kind of bad design but the problem is that i receive this string from a jabber server and i cannot do anything to change this. i should try to verify if that's correct implementation of jabber protocol still...
On 11 jan, 22:02, "Russ P." <[EMAIL PROTECTED]> wrote: > On Jan 11, 12:53 pm, "Russ P." <[EMAIL PROTECTED]> wrote: > > > > > On Jan 11, 10:50 am, teddyber <[EMAIL PROTECTED]> wrote: > > > > Hello, > > > > 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... > > > > thanks > > > The problem is that you are using commas for delimiters at two > > different levels. > > > I would start by replacing the commas between quotation marks with > > some other delimiter, such as spaces of semicolons. To do that, step > > through each character and keep a count of quotation marks. While the > > count is odd, replace each comma with the selected alternative > > delimiter. While the count is even, leave the comma. [An alternative > > would be to replace the commas outside the quotation marks.] > > > Once that is done, the problem is straightforward. Split the string on > > commas (using string.split(",")). Then split each item in the list by > > "=". Use the [0] element for the key, and use the [1] element for the > > value (first stripping off the quotation marks if necessary). If you > > need to further split each of the values, just split on whatever > > delimiter you chose to replace the commas. > > One more point. Whoever chose the structure of the string you are > parsing didn't do a very good job. If you know that person, you should > tell him or her to use different delimiters at the different levels. > Use commas for one level, and spaces or semicolons for the other > level. Then you won't have to "correct" the string before you parse > it. -- http://mail.python.org/mailman/listinfo/python-list