it-swarm-id.com

Bagaimana cara mengubah kamus ke string kueri dengan Python?

Setelah menggunakan cgi.parse_qs(), bagaimana cara mengubah hasil (kamus) kembali ke string kueri? Mencari sesuatu yang mirip dengan urllib.urlencode().

86
Sam

Python 3

urllib.parse.urlencode (permintaan, dosisq = Salah, [...])

Konversikan objek pemetaan atau urutan tupel dua elemen, yang mungkin berisi objek str atau byte, menjadi persen-disandikan ASCII string teks.

- Python 3 urllib.parse docs

A dict adalah pemetaan.

Python Warisan

urllib.urlencode (query [ doseq])
Konversi objek pemetaan atau urutan tupel dua elemen ke string "persen-disandikan" ... serangkaian key=value pasangan dipisahkan oleh '&' karakter ...

- Python 2.7 urllib docs

137

Dalam python3, sedikit berbeda:

from urllib.parse import urlencode
urlencode({'pram1': 'foo', 'param2': 'bar'})

output: 'pram1=foo&param2=bar'

untuk kompatibilitas python2 dan python3, coba ini:

try:
    #python2
    from urllib import urlencode
except ImportError:
    #python3
    from urllib.parse import urlencode
50
Johnny Zhao

Anda sedang mencari sesuatu persis seperti urllib.urlencode()!

Namun, ketika Anda memanggil parse_qs() (berbeda dari parse_qsl() ), kunci kamus adalah nama variabel kueri unik dan nilai-nilai adalah daftar nilai untuk setiap nama.

Untuk meneruskan informasi ini ke urllib.urlencode() , Anda harus "meratakan" daftar ini. Inilah cara Anda dapat melakukannya dengan daftar pemahaman tupel:

query_pairs = [(k,v) for k,vlist in d.iteritems() for v in vlist]
urllib.urlencode(query_pairs)
5
Johnsyweb