将数据对象列表转换为csv

时间:2016-05-23 03:38:52

标签: python python-2.7 csv iterable

我正在使用python 2.7.6。我想将我的对象列表转换为csv格式。我有一个cdr对象列表,这个对象包含一些string,int和datatime对象。

class cdr():
    def __init__(self):
        # some init

    def __iter__(self):
        return iter(self.name, self.my_value,self.my_datetime)

#from another class
import csv
def make_csv(self, cdr_list):
    with open(self.file_name, 'wb') as csv_file:
        wr = csv.writer(csv_file, delimiter=",")
        for cdr in cdr_list:
            wr.writerow(cdr)

但是我得到了一个空白的csv。感谢帮助。

1 个答案:

答案 0 :(得分:8)

iter内置函数需要一个集合作为参数,因此以列表形式传递属性。然后使用@Shankar建议。

class Cdr():

    def __iter__(self):
        return iter([self.name, self.my_value, self.my_datetime])


#from another class
with open(self.file_name, 'wb') as csv_file:
    wr = csv.writer(csv_file, delimiter=',')
    for cdr in cdr_list:
        wr.writerow(list(cdr))  # @Shankar suggestion

来自python帮助文档:

  

iter(...)
      iter(collection) - >迭代器
      iter(callable,sentinel) - >迭代器
      从对象获取迭代器。在第一种形式中,论证必须       提供自己的迭代器,或者是一个序列。
      在第二种形式中,调用callable直到它返回sentinel。