簡體   English   中英

TypeError:嘗試使用Python從API提取數據時,字符串索引必須為整數

[英]TypeError: string indices must be integers when trying to extract data from an API using Python

我對編程非常陌生,但以下方面存在問題:

我有一個非常簡單甚至可能毫無意義的任務,我試圖從JSON API中獲取經度和緯度數據並寫入CSV文件。 我已經基於另一個似乎可以正常工作的代碼。

我不斷收到以下錯誤代碼:

c.writerow([item ['latitude']])_ TypeError:字符串索引必須為整數

誰能幫我??

來自http://api.open-notify.org/iss-now.json的 JSON代碼

{
  "iss_position": {
    "latitude": 17.03894678089794, 
    "longitude": 1.17550020887323
  }, 
  "message": "success", 
  "timestamp": 1463137065
}

我的Python代碼

import requests
import csv

r = requests.get("http://api.open-notify.org/iss-now.json").json()

c = csv.writer(open("ISS.csv", "w"),lineterminator='\n')

for item in r['iss_position']:

    c.writerow([item['latitude'],['longitude']])

錯誤信息

C:\Python35\python.exe C:/Users/Ian/PycharmProjects/ISS/ISS.py
Traceback (most recent call last):
  File "C:/Users/Ian/PycharmProjects/ISS/ISS.py", line 10, in <module>
    c.writerow([item['latitude']])
TypeError: string indices must be integers

Process finished with exit code 1

分配給iss_position鍵( r['iss_position'] )的值是一個字典。 因此,對其進行迭代將產生鍵(字符串)而不是值(坐標)。 在這種情況下,似乎可以這樣做:

c.writerow([r['iss_position']['latitude'],r['iss_position']['longitude']])

for循環不再需要。 字典中的'iss_position'鍵下有兩個鍵,因此循環翻了兩次。 一次調用上面的代碼就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM