从巨型循环写的python csv

时间:2017-06-06 14:43:57

标签: python csv

美好的一天,

我正在从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

有很多数据,所以我无法将其保存为列表并压缩它。似乎它应该是一个简单的任务,但我找不到解决方案。

1 个答案:

答案 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'])])