我正在使用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。感谢帮助。
答案 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。