Rumah > Soal Jawab > teks badan
有如下字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
中包含'='。汗啊-_-!!
求一个高效的方法。
黄舟2017-04-18 09:14:47
Itu sahaja
>>> 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='}
伊谢尔伦2017-04-18 09:14:47
Walau bagaimanapun, tanda tambah harus ditukar menjadi ruang!
Hanya gunakan parse_qsl
迷茫2017-04-18 09:14:47
List=map(list,zip(*[i.split('=',1) for i in s.split('&')]))
dict(zip(List[0],List[1]))
Tahap saya hanya boleh pergi setakat ini
ringa_lee2017-04-18 09:14:47
import re
s = "data=Ap/8ime+SAJmU=&a=dfasfds+fsdsaf&c=fas1mk342412"
d = dict(re.findall(r"([^=&]+)=([^=&]*)",s))
print d
高洛峰2017-04-18 09:14:47
Dua mata
Seperti yang @hsfzxjy katakan, +
hanyalah penukaran kosong
Jika anda ingin menukar kepada kamus, hanya gunakan parse_qs
pada permulaan Ini akan menukarnya terus kepada dict Anda tidak perlu menukar senarai
Soalan yang saya jawab: Python-QA