python query_string转dict

有如下字query符串
s = "data=Ap/8ime+SAJmU=&a=dfasfds+fsdsaf&c=fas1mk342412"
需要转成dict
{'data': 'Ap/8ime+SAJmU=', 'a': 'dfasfds+fsdsaf', 'c': 'fas1mk342412'}

试过dict(urlparse.parse_qsl(s)),然而'+'会转成空格。
然后试过split('&'),再split('='),然而'data'value中包含'='。汗啊-_-!!
求一个高效的方法。

阅读 6.4k
5 个回答

这样就可以了

>>> s="data=Ap/8ime+SAJmU=&a=dfasfds+fsdsaf&c=fas1mk342412"
>>> dict([x.split('=',1) for x in s.split('&')])
 {'a': 'dfasfds+fsdsaf', 'c': 'fas1mk342412', 'data': 'Ap/8ime+SAJmU='}

然而加号本来就要转成空格的啊!

就用 parse_qsl 就可以了

List=map(list,zip(*[i.split('=',1) for i in s.split('&')]))

dict(zip(List[0],List[1]))

我的水平也只能到这一步了

import re
s = "data=Ap/8ime+SAJmU=&a=dfasfds+fsdsaf&c=fas1mk342412"
d = dict(re.findall(r"([^=&]+)=([^=&]*)",s))
print d

兩點

  1. 如同 @hsfzxjy 所說, + 本就是轉出空白

  2. 如果要轉成字典, 一開始用 parse_qs 就好, 這會直接轉成 dict, 不必手動再把 list 轉過去


我回答過的問題: Python-QA

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题