Re: [閒聊] 抓取資料後如何讀取特定檔案
※ 引述《talon0222 (talon)》之銘言:
: 剛入坑這個程式
: 連接url到政府的youbike之後都會跳出404項
: 目前想做到 可以使用者輸入代碼後
: 只顯示輸入代碼的資料
: 希望有大神可以幫忙
: 看了一整天的電腦找不到解答QQ
: 附上5000p 感謝
: 或是輸入城市也可以
: -----
: Sent from JPTT on my iPhone
依你目前的功能需求,應該只需求用到reqeusts就可以達到
改寫一下你的程式碼:
----------------start------------------
import requests
def show(value):
sno = value["sno"]
sna = value["sna"]
tot = value["tot"]
sbi = value ["sbi"]
sarea = value ["sarea"]
mday = value ["mday"]
lat = value ["lat"]
lng = value["lng"]
ar = value["ar"]
sna = value["sna"]
tot = value["tot"]
sbi = value ["sbi"]
sarea = value ["sarea"]
mday = value ["mday"]
lat = value ["lat"]
lng = value["lng"]
ar = value["ar"]
sareaen =value ["sareaen"]
snaen =value ["snaen"]
aren =value ["aren"]
bemp =value["bemp"]
act = value["act"]
print("代號:", sno,"名稱:", sna,"停車格:", tot,"目前車輛數量:", sbi,\
"場站區域:",sarea,"資料更新時間:", mday,"緯度:", lat,"經度:", lng,\
"地:", ar,"場站區:", sareaen,"場站名:", snaen,"地址:", aren,\
"空位數量:", bemp,"全站禁用狀態:", act )
url = "https://tcgbusfs.blob.core.windows.net/blobyoubike/YouBikeTP.gz"
data = requests.get(url).json()
z = input('請輸入代號或名稱:')
if z in data['retVal'].keys():
show(data['retVal'][z])
else:
for item in data['retVal'].values():
if z == item['sna']:
show(item)
break
else:
print('找不到相對應的資料。')
-----------------------end---------------------------
一開始測你的程式碼時,並沒有你說的404錯誤
重點應該在於,json.keys()和json.values()這兩個function
這兩個分別會回傳所有key值的dict和所有value的dict
所以就可以用 if z in data['retVal'].keys() 來判斷key裡頭有沒有z這個值
若沒有,才使用 for item in data['retVal'].values(): 的方式迭代所有的資料
比對所輸入的 z 是否與相對應的欄位值(這裡是先用'sna')相同
若相同則輸出結果並且使用 break 跳出 for in 迴圈
若都找不到,則會執行 else 的區塊
我也剛接觸python不久,說明如有不對的地方,再請大家多多指教
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 202.39.7.221
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1535616409.A.CF0.html
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):