XML讀取標籤問題
看過每個問答和每個人不同的作答還是沒辦法想通,只好發問求救:
for i in location:
for j in i['weatherElement']:
if j['description'] == '溫度':
print(i['locationName'], j['time'][0]['dataTime'], j['time'][0]['elementValue']['value'])
在Day3第二題中大家的代碼都會出現[0],請問這代表什麼?為什麼有的後面沒有[0]就會回報:TypeError: list indices must be integers or slices, not str?
我的想法是需要加[0]的標籤代表在同個層級下有一樣名字的標籤,所以用[0]去代表要索引的是第一個;而那些不用加[0]的標籤因為同層級中只有這麼一個名稱的標籤,所以不需要特別標示第幾個。
請問該怎麼理解比較好,謝謝大家!
回答列表
-
2019/12/07 下午 02:30小糖果贊同數:2不贊同數:0留言數:0
你好,我的理解跟你一樣,應該是這樣沒錯吧?這也是為什麼會報錯"TypeError: list indices must be integers or slices, not str?"的原因,如果用str去取,因為底下有很多筆資料都有這個str,這樣的話就不知道是取哪一筆,所以才說必須是integers or slices。
-
2019/12/07 下午 11:57張維元 (WeiYuan)贊同數:3不贊同數:0留言數:0
嗨,因為在 XML 中相同的標籤,在 xmltodict 轉換的過程會被轉成 list。因此 <time> 這個標籤會傳的結果會是一個 list,取值就必須加上 [ ... ] 的方式。
建議你可以試著把 j['time'] 跟 type(j['time']) 印出來看看。