我正在尝试读取一个简单的文本文件,并以基本行格式获取输出。我有一个父母班和一个孩子班。我从实例化子类开始,该子类应该从父类继承数据结构(包含的全部内容)。解析输入文件时,子类应将这些行输入到在逐行实例化子类的情况下建立的列表中。我无法弄清楚如何从main()
我已经尝试过使用正则表达式将组解析到列表中,但似乎没有任何帮助。我还尝试在add()函数末尾调用输出函数。当我检查输出函数时,列表或对象都没有定义。
输入,以单个空格分隔
E031 HR+ 301d
E005 HR+ 263d
E036 HR+ 415d
E043 HR+ 68d
E003 HR+ 133d
E044 HR+ 323d
E047 HR+ 117d
E037 HER2+ 14d
E048 TNBC 27d
E049 TNBC 148d
E046 TNBC 269d
E015 TNBC 0d
main.py
import data
def main():
#declare ObservationSet object
entry = data.ObservationSet()
entry.loadFile("input.txt")
entry.output()
if __name__ == '__main__':
main()
data.py
#class dfn & constructor
class Observation:
def __init__(self, patientNum = None, marker = None, timeLapse = None):
self.patientNum = patientNum
self.marker = marker
self.timeLapse = timeLapse
#class dfn & constructor
class ObservationSet():
def __init__(self, observations=None):
self.observations = observations
#establish list for multiple observations
if self.observations is None:
self.observations = list()
#isa list here -- print(type(self.observations))
#load file to process lines function
def loadFile(self, fileName):
for line in open(fileName):
#line = line.rstrip()
#add here to Observation object
for patient in line:
observation = Observation(patient)
self.add(observation)
#append to observations list next line of observations
def add(self, observation):
self.observations.append(observation)
def output(self):
#no idea
我真正想看到的是使用.format()
这样的东西患者编号:E031 BioMarker:HR +分子与临床复发之间的时间间隔:301天
*****编辑 首先,我希望缩进更清晰 其次,我错了。容器是正确的,不是继承。我回去看看是否可以解决。到目前为止,我删除了明显的继承行。但是我不确定使ObsSet成为Obs容器的代码。
*****编辑2 我尝试了此修改:
for patient in line:
observation = Observation(patient)
self.add(observation)
这:
def output(self):
for obs in self.observations:
print(obs)
在输出函数中,obs是对象,而不是数据本身。而且,如果我引用self.observations,则会得到未定义的全局名称错误。也就是说,obs是一个data.Observation对象。