python - 使用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
,所以我认为这是分组的最佳想法
我应该使用哪个库?
任何提示都会非常有帮助谢谢
解决方案
你可以使用这样的东西来解析文件:
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 模块处理。
推荐阅读
- embedded-linux - 如何通过 sysFS 动态删除或重新触发对 EEPROM 的探测?
- sas - 在给定条件下添加行
- python - python 从网站抓取网页
- javascript - 使用 connect-flash 的 Web 应用程序在本地工作,但在 Heroku 上出现错误
- c# - C# EF 6.0 - 更新添加到上下文集合的对象的导航属性集合
- kotlin - Using kotlin expression annotations
- php - Laravel dompdf 不显示为视图
- python - 如何在 html 选择器中查看隐藏的内容?
- r - finalfit::missing_compare 中的错误:找不到对象
- python - 在 Python 中将数字添加到列表中,但将添加 1 和 0 而不是 10