import requests,json
html = requests.get("https://building.tycg.gov.tw/opendata/OpenDataSearchUrl.do?d=OPENDATA&c=BUILDLIC&Start=1&%E5%9F%B7%E7%85%A7%E9%A1%9E%E5%88%A5=%E5%BB%BA%E9%80%A0%E5%9F%B7%E7%85%A7&%E7%99%BC%E7%85%A7%E6%97%A5%E6%9C%9F=111%E5%B9%B401%E6%9C%88")
list1 = eval(html.text)
print(list1)
s="執照類別,執照字號,原執照,變更設計次數,基地面積,建築面積,總樓地板面積,建築高度,地下避難,法定空間,建造類別,構造別,地上層數,地下層數,棟樹,戶數,起造人,設計人,監造人,承造人,雜項,停車,發照日,開工日,竣工日,qtime,樓層概要,地號,門牌\n"
for dict in list1:
list2=list(dict.values())
print(list2)
s=s+"{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}{},{},{},{},{},{},{},{},{},{}\n".format(list2[0],list2[1],list2[2],list2[3],list2[4],list2[5],list2[6],list2[7],list2[8],list2[9],list2[10],list2[11],list2[12],list2[13],list2[14],list2[15],list2[16],list2[17],list2[18],list2[19],list2[20],list2[21],list2[22],list2[23],list2[24],list2[25],list2[26],list2[27],list2[28])
fw=open("桃園市110年1月.csv","w")
fw.write(s)
fw.close()
程式碼如上
各位大大下午好,小弟想抓公開資訊資料json檔轉成CSV檔,但RUN的時候跑出這一行,請問是哪裡出錯了呢?
File "c:\users\user.spyder-py3\untitled2.py", line 7, in
list2=list(dict.values())
AttributeError: 'str' object has no attribute 'values'
json來源:https://building.tycg.gov.tw/opendata/OpenDataSearchUrl.do?d=OPENDATA&c=BUILDLIC&Start=1&%E5%9F%B7%E7%85%A7%E9%A1%9E%E5%88%A5=%E5%BB%BA%E9%80%A0%E5%9F%B7%E7%85%A7&%E7%99%BC%E7%85%A7%E6%97%A5%E6%9C%9F=111%E5%B9%B401%E6%9C%88
可以試試看 list1["data"]
for dict in list1["data"]:
list2=list(dict.values())
AttributeError: 'str' object has no attribute 'values'
直接翻譯是 「屬性錯誤: '字串' 物件沒有 'values' 屬性」
簡單講就是你以為一定會拿到dict, 但事實上他也有機會拿到str
至於原本預期應該拿到的dict,卻拿到了str
這個你可以先試著在出錯的前一行把你的dict印出來看看
再來研究為什麼會出現這樣的狀況