2017-03-06 49 views
1

我需要從json頁面獲取數據並將其轉換爲列表。Python:無法從json獲取數據並轉換爲列表

import json 
import requests 

j = requests.get('http://www.example.com/Portals/0/StaticData/data.js') 
abc = json.loads(j.content) 

然而,發生錯誤

ValueError: No JSON object could be decoded 

我需要的是

mylist = ['AALI','ABBA','ABDA'.......] 
mylist1 = ['Astra Agro Lestari Tbk','Mahaka Media Tbk','Asuransi Bina Dana Arta Tbk',.......] 
+0

這端點(即'idx.​​co.id ...'URL)不返回JSON,但有一個變量賦值的JavaScript代碼'VAR symbolsCode = [{ 「'...你可能想看看這個線程?:http://stackoverflow.com/questions/390992/javascript-parser-in-python也許它有幫助 – BorrajaX

回答

2

您沒有一個有效的JSON回來,你可以與json閱讀它之前清理模塊:

js = j.content.decode("utf-8").split("=")[-1].strip().strip(';') 

json.loads(js) 

#[{'code': 'AALI', 'name': 'Astra Agro Lestari Tbk'}, 
# {'code': 'ABBA', 'name': 'Mahaka Media Tbk'}, 
# {'code': 'ABDA', 'name': 'Asuransi Bina Dana Arta Tbk'}, 
# {'code': 'ABMM', 'name': 'ABM Investama Tbk'}, 
# {'code': 'ACES', 'name': 'Ace Hardware Indonesia Tbk'}, 
# ... 

要解壓縮的結果爲兩個列表:

mylist, mylist1 = zip(*((d['code'], d['name']) for d in json.loads(js))) 
+0

它的工作原理,但仍然有'你'在mylist和mylist1。另外,你可以添加'js = j.content.decode(「utf-8」)的解釋。split(「=」)[ - 1] .strip()。strip(';')'和'json.loads (JS)'? – bkcollection