假设我有一些由我的绘图应用程序生成的数据系列,我想将它们存储并随意在 .csv 中调用它们。
每个数据集有四个特征。一个名称、一组 x 值 ( xvals
)、一组 y 值 ( yvals
) 和父级。
我目前正在想象一个 .csv 文件,我会在 Excel 中生成那种文件,我在想:
name, DataSet1
xvals, 1,2,3,4,5
yvals, 1,4,9,16,25
parent, None
<linebreak>
name, DataSet2
xvals, 1,2,3,4,5
yvals, 21,23,24,25,26
parent, None
<linebreak>
等等。感觉不是很自然,而且实现看起来有点难看。有没有人有什么建议?
在我的应用程序中,每个 DataSeries 实例已经包含了我需要的所有数据。如果我实际上可以保存实例对象本身(或它们的集合),那么在此期间也可以正常工作(尽管我最终希望能够导出数据以在 Excel 中使用)
我想告诉python:
读取文件中的所有行。每次阅读“空白”行时,插入分隔符。将每组线视为一个数据集。
阅读包装中每一行的第一项。这是该行中其余单元格包含的信息类型。获取该引用,并将所有相邻单元格中的数据作为列表放入相应的对象属性中。
我有办法做到这一点,但它涉及到很多尴尬的对角色和位置的具体调用,这让我想起了“GOTO”语句。我想要一些更有机和 Pythonic 的东西。
目前的做法:
class DataSet(object):
def __init__(self, name, xvals, yvals, parent=None):
self.name = name
self.xvals = xvals
self.yvals = yvals
self.parent = parent
loaded_data = csv.reader(open('csv_data.csv', 'r'), delimiter=',')
container = []
dict = {}
for row in loaded_data:
if list(row)[0] == '':
container.append(dict)
dict = {}
else:
dict[list(row)[0]] = filter(None,list(row)[1:])
container.append(dict)