我使用curl请求从一组网址收集数据并将其转换为json。这些数据在python中表示为列表或词典。
编辑: 接下来,我想将我的脚本循环到列表中的字典中的值(字典的类型列表),直到满足列表的长度。我想循环我的其他curl请求每个'实例'然后将该信息写入.csv,名称为' instance_name' .csv
.csv中的信息是从2个不同的curl请求中填充的,不包括我要遍历的所有请求。 .csv需要由' instance_name'创建和填充。但实际内容是通过其他curl请求填充的。
我要循环的列表信息:
>>> instances = [i['instance_name'] for i in i_data]
>>> print(instances)
[u'Instance0', u'Instance1', .... u'Instance16']
>>> type(i_data)
<type 'list'>
>>> len(i_data)
17
>>> print(i_data[0])
{u'instance_name': u'Instance1', u'attribute2': {u'attribute2_1': u'yes', u'attribute2_2': u'no', u'attribute2_3': u'bye', u'attribute2_4': u'hello', u'attribute2_5': 500}, u'attribute3': u'abcd', u'attribute4': u'wxyz'}
>>>
如何开始此循环?例如:
i = 0
for i in len(i_data[i]):
with open('{}.csv'.format(i['instance_name']), 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
尝试测试:
>>> i = 0
>>> for i in len(i_data[i]):
... print('Hello')
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>
其次,如何将csv中的某些字段名称与列表或词典中的某些键匹配?
对于名为“Id&#39;我想将其值作为Id
放入.csv文件中fieldnames = ['Id', 'domain_name', 'website', 'Usage', 'Limit']
我的字段名是否应与Keys相同,以便值知道去哪里?或者我该怎么做?
我现在收到此错误:
Traceback (most recent call last):
File "./usage_2.py", line 42, in <module>
writer.writerow(t_data['domain_name'])
File "/usr/local/lib/python2.7/csv.py", line 152, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
File "/usr/local/lib/python2.7/csv.py", line 148, in _dict_to_list
+ ", ".join([repr(x) for x in wrong_fields]))
ValueError: dict contains fields not in fieldnames: u'p', u'e', u'r', u'f', u'e', u'c', u't', u'u', u's', u'g', u'r', u'e', u'u', u'p', u'a', u'h', u'r', u'.', u'o', u'n', u'm', u'i', u'c', u'r', u'o', u's', u'o', u'f', u't', u'.', u'c', u'o', u'm'
因为,我认为它试图将json数据放在u&#39;而且我也不知道数据是否正在进行。
写入数据的一个例子:
writer.writerow(t_data['domain_name'])
条目如下:
>>> print(t_data['domain_name'])
abc.123.com
>>>
这个&#39; t_data&#39;当我检查时,从另一个卷曲请求中拉出来表示为字典。
>>> type(t_data)
<type 'dict'>
>>>