cari

Rumah  >  Soal Jawab  >  teks badan

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中包含'='。汗啊-_-!!
求一个高效的方法。

PHP中文网PHP中文网2889 hari yang lalu535

membalas semua(5)saya akan balas

  • 黄舟

    黄舟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='}

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:14:47

    Walau bagaimanapun, tanda tambah harus ditukar menjadi ruang!

    Hanya gunakan parse_qsl

    balas
    0
  • 迷茫

    迷茫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

    balas
    0
  • ringa_lee

    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

    balas
    0
  • 高洛峰

    高洛峰2017-04-18 09:14:47

    Dua mata

    1. Seperti yang @hsfzxjy katakan, + hanyalah penukaran kosong

    2. Jika anda ingin menukar kepada kamus, hanya gunakan parse_qs pada permulaan Ini akan menukarnya terus kepada dict Anda tidak perlu menukar senarai

    3. secara manual

    Soalan yang saya jawab: Python-QA

    balas
    0
  • Batalbalas