logo
Loading...

XML讀取標籤問題 - Cupoy

看過每個問答和每個人不同的作答還是沒辦法想通,只好發問求救:for i in location:  ...

pycrawler,day3,pycrawler-d03

XML讀取標籤問題

2019/12/07 上午 02:55
Python網路爬蟲討論版
Eddie
觀看數:11
回答數:2
收藏數:1
pycrawler
day3
pycrawler-d03

看過每個問答和每個人不同的作答還是沒辦法想通,只好發問求救:

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']) 印出來看看。