iT邦幫忙

0

python錯誤訊息

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20220516/201490380v1cXCRhlW.jpg
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

這個錯誤指的是你迴圈裡面 dict.values(),你抓回來的list取出的dict,這個東西有可能不是dict,所以會錯,只要加個try做例外處理就好
try:
list2=list(dict.values())
except:
continue
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
hokou
iT邦好手 1 級 ‧ 2022-05-16 14:30:55

可以試試看 list1["data"]

for dict in list1["data"]:

    list2=list(dict.values())
0
frogsoul
iT邦研究生 4 級 ‧ 2022-05-17 09:24:11

AttributeError: 'str' object has no attribute 'values'
直接翻譯是 「屬性錯誤: '字串' 物件沒有 'values' 屬性」

簡單講就是你以為一定會拿到dict, 但事實上他也有機會拿到str

至於原本預期應該拿到的dict,卻拿到了str
這個你可以先試著在出錯的前一行把你的dict印出來看看
再來研究為什麼會出現這樣的狀況

我要發表回答

立即登入回答