作者acer1832a (Mike)
看板Python
标题Re: [闲聊] 抓取资料後如何读取特定档案
时间Thu Aug 30 16:06:46 2018
※ 引述《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://webptt.com/cn.aspx?n=bbs/Python/M.1535616409.A.CF0.html