计算机二级python综合应用题(四)

考生文件夹下存在两个 Python源文件,分别对应两个问题,请按照文件内说明修改代码,实现以下功能:
下面所示为一套由公司职员随身佩戴的位置传感器采集的数据,文件名称为“sensor.txt”,其内容示例如下
2016/5/31 0:05, vawelon001,1,1
2016/5/310:20, arpa001,1,1
2016/5/312:26, arpa001,1,6
… (略)
第一列是传感器获取数据的时间,第二列是传感器的编号,第三列是传感器所在的楼层,第四列是传感器所在的位置区域编号。

问题1(10分):

在PY301_1.py文件中修改代码,读入sensor.txt文件中的数据,提取出传感器编号为arpa001的所有数据,将结果输出保存到“arpa001.txt”文件。
输出文件格式要求:原数据文件中的每行记录写入新文件中,行尾无空格,无空行。参考格式如下:
2016/5/31 7:11, arpa001,2,4
2016/5/31 8:02, arpa001,3,4
2016/5/31 9:22, arpa001,3,4
…(略)

fi=open("sensor.txt","r",encoding="utf-8")
fo=open("earpa001.txt","w")
for line in fi:
    ls=line.strip(" \n").split(",")
    if ls[1].count("earpa001")>0:
        fo.write('{},{},{},{}\n'.format(ls[0],ls[1],ls[2],ls[3]))
fi.close()
fo.close()

问题2(10分):

在PY301_2.py文件中修改代码,读入“ arpa001.txt”文件中的数据,统计 arpa001对应的职员在各楼层和区域出现的次数,保存到“ 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次;

fi=open("earpa001.txt","r")
fo=open("earpa001_count.txt","w")
d = {}
for line in fi:
    ls=line.strip(" \n").split(",")
    m=ls[2]+"-"+ls[3]
    d[m]=d.get(m,0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=False) # 该语句用于排序
for i in range(len(ls)):
    fo.write('{},{}\n'.format(ls[i][0],ls[i][1]))
fi.close()
fo.close()

你可能感兴趣的:(python)