cari

Rumah  >  Soal Jawab  >  teks badan

python - Mengapa selepas menggunakan requests.get URL, kandungan respons dalam .text adalah dalam bentuk kamus, tetapi taipkannya str

Saya menggunakan jupyter anaconda untuk menjalankan kod
Saya menggunakan modul permintaan untuk membaca halaman web

Saya melihat bahawa kandungan keluaran adalah dalam kurung saya menilai bahawa ia adalah , jadi saya menggunakannya fungsi dict untuk membaca nilai, tetapi ia gagal.
type()
mendapati atributnya ialah str
Selepas saya menggunakan json
, saya dapati atribut itu bertukar kepada dict Apabila program membaca kandungan kamus

sebagai

rentetan, bagaimana kita harus mengubahnya kembali menjadi atribut kamus?

学习ing学习ing2756 hari yang lalu1011

membalas semua(3)saya akan balas

  • 習慣沉默

    習慣沉默2017-06-12 09:23:24

    Sila gunakan butang edit <> untuk menambah kod apabila bertanya soalan pada masa hadapan, supaya orang lain boleh mencuba kod tersebut.

    Cuba kod berikut:

    x = eval(r.text)
    y = r.json()
    print (type(x), type(y))
    print (x==y)

    Hasilnya mestilah kedua-duanya adalah kamus dan mempunyai kandungan yang sama. Dengan kata lain:

    x = eval(r.text)  
    y = r.json()      
    • x ialah untuk melaksanakan rentetan r.text secara langsung sebagai ungkapan untuk menjana kamus

    • y ialah objek json yang dikembalikan oleh kaedah r.json(), yang menjana kamus

    Jadi soalan anda ialah:
    "Apabila atur cara membaca kandungan kamus jenis ini sebagai rentetan, bagaimana untuk menjadikannya atribut kamus sekali lagi
    Anda boleh menukar soalan dengan lebih tepat kepada:
    "Rentetan ialah ungkapan dalam bentuk?" daripada kamus. Bagaimana untuk menukar rentetan menjadi kamus "
    Maka jawapannya ialah fungsi terbina dalam eval()

    Sudah tentu, modul permintaan sudah mempunyai kaedah .json(), anda boleh menggunakannya

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-12 09:23:24

    d = r.json()

    Dengan cara ini, anda akan mendapat kamus d

    balas
    0
  • 迷茫

    迷茫2017-06-12 09:23:24

    Masih ada tanda petikan di luar

    balas
    0
  • Batalbalas