美好的一天,
我正在从api收集数据,并尝试将其保存为csv。我收到的格式是:
for title in titles:
print(title.name)
for data in title.data:
print(data)
Title1
data1
data2
data3
Title2
data4
data5
data6
等,(第一个,最后一个,来自一个巨大的循环)
我想制作一个csv,看起来像
Title1 Title2
data1 data4
data2 data5
data3 data6
有很多数据,所以我无法将其保存为列表并压缩它。似乎它应该是一个简单的任务,但我找不到解决方案。
答案 0 :(得分:0)
根据MaartenFabré的建议,您可以将数据接收功能作为数据生成器:
import pyexce as p
...
def data_gen():
for title in titles: # put your data recicving api code here
yield [title.name] + title.data
p.save_as(array=data_gen(), dest_file_name='result.csv')
然后,您将把result.csv中的数据作为:
Title1,data1,data2,data3
Title2,data4,data5,data6
然后你可以稍后转置它:
>>> s=p.get_sheet(file_name='result.csv')
>>> s
result.csv:
+--------+-------+-------+-------+
| Title1 | data1 | data2 | data3 |
+--------+-------+-------+-------+
| Title2 | data4 | data5 | data6 |
+--------+-------+-------+-------+
>>> s.transpose()
>>> s
result.csv:
+--------+--------+
| Title1 | Title2 |
+--------+--------+
| data1 | data4 |
+--------+--------+
| data2 | data5 |
+--------+--------+
| data3 | data6 |
+--------+--------+
>>> s.save_as('perferct_result.csv')
或者,您可以立即使用它而无需转置它:
>>> s=p.get_sheet(file_name='result.csv')
>>> s.name_rows_by_column(0)
>>> s
result.csv:
+--------+-------+-------+-------+
| Title1 | data1 | data2 | data3 |
+--------+-------+-------+-------+
| Title2 | data4 | data5 | data6 |
+--------+-------+-------+-------+
>>> s.to_dict()
OrderedDict([(u'Title1', [u'data1', u'data2', u'data3']), (u'Title2', [u'data4', u'data5', u'data6'])])