首页 > 解决方案 > 使用python对文本文件中的行进行分组

问题描述

我有大量数据正在尝试分析(数据在文本文件中)

这是一个例子:

0000:name=max
     age=19
     grade= 90
     hair color= brown
     eyes color= blue
     end

0001:name=jack
     age=18
     grade= 91
     hair color= black
     eyes color= blue
     end
0002:name=kay
     age=21
     grade= 70
     hair color= red
     eyes color= blue
     end

我试图将数据保存在包含名称、年龄等列的 excel 表中。我所做的是搜索特定的单词'age''name'然后保存它,但有时在某些情况下它很棘手。所以我想把每个学生单独分组,然后在这个组中搜索。

我意识到每组以 4 位数字和冒号开头,每组以 结尾end,所以我认为这是分组的最佳想法

我应该使用哪个库?

任何提示都会非常有帮助谢谢

标签: pythontext

解决方案


你可以使用这样的东西来解析文件:

def retrieve_data_as_dict(file_name):
    with open(file_name) as file:
        data = []
        entry = dict()
        for line in file.readlines():
            line = line.strip()
            
            if line == "end":
                data.append(entry)
                entry = dict()
            elif line != "":
                if len(line.split(":")) > 1:
                    line = line.split(":")
                    line.pop(0)
                    line = ":".join(line)
                key, value = line.split("=")
                entry[key.strip()] = value.strip()
    return data

print(retrieve_data_as_dict("data.txt"))

如果 的内容data.txt与您在上面定义的一样,则此示例将输出

[{'name': 'max', 'age': '19', 'grade': '90', 'hair color': 'brown', 'eyes color': 'blue'}, {'name': 'jack', 'age': '18', 'grade': '91', 'hair color': 'black', 'eyes color': 'blue'}, {'name': 'kay', 'age': '21', 'grade': '70', 'hair color': 'red', 'eyes color': 'blue'}]

有了字典中的这些数据,您现在可以根据需要在程序中轻松操作它们,并将它们添加到 csv 文件中,excel 可以使用 Python 的csv 模块处理。


推荐阅读