下面所示为一套由公司职员随身佩戴的位置传感器采集的数据,文件名称为“sensor.txt”,其内容示例如下:
2016/5/31 0:05, vawe1on1,1,1
2016/5/31 0:20, earpa001,1,1
2016/5/31 2:26, earpa001,1,6
…(略)
第一列是传感器获取数据的时间,第二列是传感器的编号,第三列是传感器所在的楼层,第四列是传感器所在的位置区域编号。
问题1:读入sensor.txt文件中的数据,提取出传感器编号为earpa001的所有数据,将结果输出保存到“earpa001.txt”文件。输出文件格式要求:原数据文件中的每行纪录写入新文件中,行尾无空格,无空行。参考格式如下:
2016/5/31 7:11, earpa001,2,4
2016/5/31 8:02, earpa001,3,4
2016/5/31 9:22, earpa001,3,4
…(略)
f1=open('sensor.txt','r',encoding='utf-8')
lines=f1.readlines()
f1.close()
f2=open('earpa001.txt','w',encoding='utf-8')
for line in lines:
if 'earpa001' in line:
f2.write(line)
f2.close()
问题2:读入“earpa001.txt”文件中的数据,统计earpa001对应的职员在各楼层和区域出现的次数,保存到“earpa001_count.txt”文件,每一条纪录一行,位置信息和出现的次数之间用英文半角逗号隔开,行尾无空格,无空行。参考格式如下。
1-1,5
1-4,3
…(略)
含义如下:
第1行“1-1,5”中1-1表示1楼1号区域,5表示出现5次;
第2行“1-4,3”中1-4表示1楼4号区域,3表示出现3次;
f1=open('earpa001.txt','r',encoding='utf-8')
lines=f1.readlines()
f1.close()
d = {}
for line in lines:
line=line.split(',')
d[line[-1][-2]]=d.get(line[-1][:-1],0)+1 #可以打开earpa001.txt文件发现earpa001对应的职员均在1号楼,所以只需要统计区域即最后一列line[-1],[:-1]表示去掉最后的换行符\n
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True)
f2=open('earpa001_count.txt','w',encoding='utf-8')
for i in range(len(ls)):
f2.write('1-{},{}\n'.format(ls[i][0],ls[i][1])) #因为打开earpa001.txt文件发现earpa001对应的职员均在1号楼,所以前面加了1-
f2.close()