我正在尝试用Python构建IPStack API脚本。我无法将JSON输出写入CSV。(此脚本的下一阶段将发送多个ip地址值,因此我需要迭代地执行此操作。)
我一直在想如何告诉Python哪些键值对要写入CSV。下面是我的代码,后面是它返回的错误。你知道吗
如有任何见解,我将不胜感激。你知道吗
import requests
import csv
import json
ip_address = '65.222.2.114'
# key = '?access_key=12345'
full_request = 'http://api.ipstack.com/' + ip_address + '?access_key=12345'
joined_full_request = ''.join(full_request)
r = requests.get(joined_full_request)
output = r.json()
print(output)
with open('/Users/reallymemorable/Desktop/iptest.csv', 'w', newline='') as csvfile:
fieldnames = ['continent_name', 'country_code', 'country_name', 'region_code', 'region_name', 'city', 'zip', 'latitude', 'longitude']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writerow({['continent_name'], ['country_code'], ['country_name'], ['region_code'], ['region_name'], ['city'], ['zip'], ['latitude'], ['longitude']})
错误:
TypeError: unhashable type: 'list'
还有,当我编辑我的编写器.writerow行,例如“output['continent\u name']”,它给了我这个错误:
TypeError: writerow() takes 2 positional arguments but 10 were given
在此行中:
您可以用
{
打开,这是字典({k1: v1, k2: v2, ...}
),但是您可以尝试在两个大括号中填充一个列表。这是没有任何意义的,你得到的错误,因为Python的东西你试图使用列表作为字典键。你知道吗您已经创建了一个
DictWriter
实例,这意味着您需要将字典传递给writerow
方法。例如,类似于:如果您试图从JSON结果中写入值,那么只需提取必要的一个或多个键即可。如果您在这方面需要更多帮助,那么您需要更新您的问题,以显示JSON内容的实际外观。你知道吗
相关问题 更多 >
编程相关推荐