我有一个带有ID号的文件以及记录的事件的详细信息。 (时间,温度,位置)
我希望python将所有相同的i.d.分组到他们自己的唯一文件中,存储每条记录中的所有偶数细节。
也就是说,遍历每条记录,如果id没有日志文件,则创建一个,如果它将新记录记录到该id的文件中。
示例输入
1, 11:00, 70, port A
1, 11:02, 70, port B
2, 11:00, 40, blink
3, 11:00, 30, front
期望的输出
文件名“1”:[11:00,70,A口; 11:02,70,B口
文件名“2”:[11:00,40,blink]
文件名“3”:[11:00,30,前]
我是python的新手,我找不到参考指南。如果有人知道我可以寻找答案的好地方,我会很感激。
答案 0 :(得分:-1)
这非常简单 - 假设您的文件与您描述的一样,但我在Python 2.7中,所以我不确定它们之间的区别是什么。
all_lines = open('c:\\path_to_my_file.txt').readlines()
from collections import defaultdict
my_classified_lines = defaultdict(list)
for line in all_lines:
data_type, value1,value2,value3 = line.split(',')
my_classified_lines[data_type).append(','.join([value1,value2,value3])
for data_type in my_classified_lines:
outref = open('c:\\directory\\' + data_type + '.txt', 'w')
outref.writelines(my_classified_lines[data_type])
outref.close()
要理解这一点,你需要了解字典 - 数据的有用容器, 文件操作 和循环
我在启动时发现潜入Python是一个很好的资源
在查看你的输出后,我可能没有你想要的东西就像
11:00,70,A口 11:02,70,B口
我认为你说你想要一个像分号对象这样的列表作为分隔符,我建议你要求一个带括号的字符串。如果您的输出真的与您描述的一样,那么试试这个
for data_type in my_classified_lines:
outref = open('c:\\directory\\' + data_type + '.txt', 'w')
out_list =[ ';'.join([item for item in my_classified_lines[data_type'])]
outref.writelines(outlist) # should be only one line
outref.close()