读取fi时,将示例中的质心分成两个列表

2024-10-06 07:06:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法读取文件并将其信息分为两个不同的列表。该文件如下所示:

#Sample number, nick name and features:
#Id; name; heads; eyes; mouths; legs; tails; horns; rings; thorns; scales
#List of exemplars:
ff44578jhT; strangeBug; 2; 7; 3; 5; 2; 1; 71; 235; 312
sahfhfdjbd; afgefd; 2; 8; 6; 5; 8; 9; 9; 6; 45
adhfcbidsgh; diufhek; 4; 5; 6; 8; 5; 6; 2; 3; 45
#List of samples:
k345fv78; littleMonster; 2; 4; 3; 0; 2; 1; 89; 2345; 0
dufihsd; diufhek; 4; 5; 6; 8; 5; 6; 2; 3; 45

我可以阅读它并忽略以#开头的行,但只能在单个列表中添加行。代码如下:

def readFileExamples(filename):
    in_file=open(filename)
    for i in range(3):
        in_file.readline()
    examples=[]
    for line in in_file:
        if '#' not in line:
            ident, name, heads, eyes, mouths, legs, tails, horns, rings, thorns, scales = line.strip().split('; ')        
            examples.append((ident, name, heads, eyes, mouths, legs, tails, horns, rings, thorns, scales))
    in_file.close()
    return examples

我的目标是有一个包含所有示例的列表和另一个包含所有示例的列表。示例和示例不是固定数量的行,它可以有更多行,因此我无法根据它们在文件中的位置读取文件


Tags: 文件namein示例列表fileheadseyes
1条回答
网友
1楼 · 发布于 2024-10-06 07:06:30

在这里,我已经删除了前3行跳过代码,因为它将被#skip覆盖

        def readFileExamples(filename):
            in_file=open(filename)

            examples = []
            tmp = []
            for line in in_file:
                if line == "#List of samples:\n":
                    # examples are over, we will start samples now
                    examples = tmp.copy()
                    tmp.clear()
                if '#' not in line:
                    ident, name, heads, eyes, mouths, legs, tails, horns, rings, thorns, scales = line.strip().split('; ')
                    tmp.append((ident, name, heads, eyes, mouths, legs, tails, horns, rings, thorns, scales))
            in_file.close()

            samples = tmp.copy()
            return examples, samples

        if __name__ == '__main__':
            print(readFileExamples('scratch.txt'))

相关问题 更多 >