我是编程新手,我遇到以下问题:
我有一个非常简单但也许毫无意义的任务,我试图从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
答案 0 :(得分:2)
分配给iss_position
键(r['iss_position']
)的值是字典。因此,迭代它将产生键(字符串)而不是值(坐标)。在这种情况下似乎会这样做:
c.writerow([r['iss_position']['latitude'],r['iss_position']['longitude']])
不再需要for
循环。在'iss_position'
键下的字典中有两个键,因此循环变为两次。只需调用上面的代码就足够了。