請問我寫的註解正確嗎 ?
import requests # 先引入 requests 模組 , 才可以從網上下載資料
html=requests.get('https://tcgbusfs.blob.core.windows.net/blobyoubike/YouBikeTP.json')
# 使用 GET 方式下載普通網頁 , 存到 html 變數
html.encoding="UTF-8"
"""
UTF-8
1. 支援所有語言文字,還有一些怪怪圖形
"""
list1=eval(html.text)
#eval() 函數用來執行一個字符串表達式,並返回表達式的值。抓取網上資料存成 list1
for dict in list1: # 取出字典的內容
listvalues=list(dict.values()) #列出字典的值 , 存到 listvalues
print(listvalues) # 列印 listvalues
屬性錯誤訊息 , 是因為字串中沒有值嗎 ?
File "D:/request.py", line 19, in <module>
listvalues=list(dict.values()) #列出字典的值 , 存到 listvalues
AttributeError: 'str' object has no attribute 'values'
你可以把你的 code 改成
...(上略)
for dict in list1: # 取出字典的內容
print(type(dict))
#listvalues=list(dict.values()) #列出字典的值 , 存到 listvalues
#print(listvalues) # 列印 listvalues
會看到 dict 的 type 是 str
然後你再用
dir(str)
會發現 str 沒有 values 這個 attribute
這也是 console 要跟你說的
然後像 ccutmis大 說的
直接用 json 去解就好
import json
import requests
html=requests.get('https://tcgbusfs.blob.core.windows.net/blobyoubike/YouBikeTP.json')
html.encoding="UTF-8"
json_array = json.loads(html.text)
for i in json_array["retVal"]:
print(json_array["retVal"][str(i)]["sna"],json_array["retVal"][str(i)]["lat"],json_array["retVal"][str(i)]["lng"])
我本來想簡單的寫個json解析的範例 但是看到樓主好像是新手就有點不知有沒有貼出來的必要了 借兄台的留言區貼一下...
謝謝回復 , 我如果要把輸出轉成 excel , 要如何加 , 我寫了一些 , 是哪裡要修正的
import xlwt
import json
import requests
book=xlwt.workbook(encoding='utf-8',style_compression=0)
html=requests.get('https://tcgbusfs.blob.core.windows.net/blobyoubike/YouBikeTP.json')
html.encoding="UTF-8"
sheet=book.add_sheet('mysheet',cell_overwrite_ok=True)
sheet.write(0,0,'mytext')
book.save('/users/kevin/desktop/test.xls')
json_array = json.loads(html.text)
for i in json_array["retVal"]:
print(json_array["retVal"][str(i)]["sna"],json_array["retVal"][str(i)]["lat"],json_array["retVal"][str(i)]["lng"])
建議樓主盡量避免發生在A問題裡問B問題這種情況...
=======================
以下是你問的存成xls的範例:
import xlwt
import json
import requests
from tempfile import TemporaryFile
book = xlwt.Workbook()
sheet = book.add_sheet('mysheet',cell_overwrite_ok=True)
sheet.write(0,0,"站名")
sheet.write(0,1,"經度")
sheet.write(0,2,"緯度")
html=requests.get('https://tcgbusfs.blob.core.windows.net/blobyoubike/YouBikeTP.json')
html.encoding="UTF-8"
json_array = json.loads(html.text)
row=1
for i in json_array["retVal"]:
print(row)
print(json_array["retVal"][str(i)]["sna"],json_array["retVal"][str(i)]["lat"],json_array["retVal"][str(i)]["lng"])
sheet.write(row,0,json_array["retVal"][str(i)]["sna"])
sheet.write(row,1,json_array["retVal"][str(i)]["lat"])
sheet.write(row,2,json_array["retVal"][str(i)]["lng"])
row=row+1
name = "YouBikeTP.xls"
book.save(name)
book.save(TemporaryFile())
print(name+" 儲存完畢!")
ps.我個人存檔xls都是用pandas處理 因為它有提供很方便的函式 例如to_excel to_csv 之類的 可以直接把二維陣列存成指定檔案格式
用xlwt還要處理行跟列太麻煩了
========
這串原本樓主提的問題 邦友DragonH已給完善的建議 後續我就不回覆了...
謝謝你的熱心解答 , 我在了解看看程式是怎麼寫的