使用基本 python 数据结构的自定义数据结构
这就是数据(连同元值)的样子:
- 文件中有很多行。因此,我们为每一行分配一个名称。说
line1
- 每行都有几个数字,每个数字都有一些属性。
现在,
- 我们构造了一个文件
list
中有尽可能tuples
多的行数。
- 每个元组的第一个元素是
TupleName
,第二个元素是list
存储数字数据的
- 在第二个元素中,元组的数量与连续的数字一样多。其中每个元组包含
number
和dict
属性。
例子 :
data_structure = [ ("line1", [ ("num1", {"attr1" : value, "attr2" : value, } ),
("num2", {"attr1" : value, } ),
("num3", {} ),
]
),
("line2", [ ("num1", {"attr1" : value, "attr2" : value, } ),
("num2", {"attr1" : value, "attr2" : value, } ),
]
),
("line3", [ ("num1", {"attr1" : value, "attr2" : value, } ),
],
]
这显然看起来很复杂。但是,由于我们现在标准化了数据结构,我们可以编写一个class
定义添加、删除或编辑的方法attributes
ornumbers
或lines
。最重要的部分是,确保您编写了一个从文件对象创建我们的数据结构的方法。
现在,您摆脱了复杂性。
您可以使用lists
代替,tuples
但我只是为了不干扰我们定义的数据结构而添加。
样本类
可能是原始的,但它应该告诉你我实际上想要解释什么
class data (object):
def __init__(self, file_name):
self.file_name = file_name
self.data = open(self.file_name, "r").readlines()
# The Data Str
self.ds = self.makeDS()
def getNumList(self, line_count):
return self.data[line_count][:-1].split()
def makeDS (self):
ds = []
for eachLine in self.data:
line_count = self.data.index(eachLine)
num_list = self.getNumList(line_count)
eachLine_num_data = []
for aNum in num_list:
num_attr = {}
eachLine_num_tuple = (aNum, num_attr)
eachLine_num_data.append(eachLine_num_tuple)
eachLine_tuple = (line_count, eachLine_num_data)
ds.append(eachLine_tuple)
return ds
def getAttr (self, line_count, num_count):
attr = self.ds[line_count][1][num_count]
return attr
def add_attr (self, line_count, num_count,
attr_name, attr_value):
attr = self.ds[line_count][1][num_count][1]
attr[attr_name] = attr_value
o = data("file.txt")
o.add_attr(0,0,"name", "value")
print o.getAttr(0, 0)
输出
>>> ('2', {'name': 'value'})
如何在文件中应用属性
这有点复杂(不完全)。标准文本文件不支持(下划线、粗体、斜体 ..)等功能。或.docx
任何其他格式更可能是zip archive
格式openXML
。您需要知道如何使用它们才能应用 about 属性。