qq_37589257 2019-04-18 15:50 采纳率: 25%
浏览 452
已采纳

python实现对文本数据的错误数据删除

1.以下数据格式第一列为时间,时间相同情况下,第二列数据需要递增,否则是错误的需要删除这一行数据
2.文本数据贴一部分:
16:28:34 3965 22 2 9
16:28:34 4165 22 1 8
16:28:34 4365 22 1 6
16:28:34 4568 22 2 9
16:28:34 4766 21 0 9
16:28:34 497 22 1 9
16:28:34 5166 22 1 9
16:28:34 5365 22 1 8
16:28:34 5565 23 0 9
16:28:34 5778 22 1 8
16:28:34 5965 22 2 9
16:28:34 6169 21 2 9
16:28:34 6365 21 1 9
16:28:34 657 21 1 9
16:28:34 6765 22 1 8
16:28:34 6966 22 2 9
16:28:34 7166 22 1 8
16:28:34 7365 22 1 9
3.我用列表方式读了这个数据,n行m列的列表
F1 = open(r"C:\Users\11816\Desktop\data_clear.txt", "r")
List_row = F1.readlines()
list_source = []
#x = len(List_row)-1;
#y = len(List_row[0].split("\t"))-1;
for i in range(len(List_row)):
column_list = List_row[i].strip().split("\t") # 每一行split后是一个列表
list_source.append(column_list) # 加入list_source
print(list_source)#二元组


  • 写回答

1条回答

  • 狂颜 2019-04-18 16:39
    关注

    算法流程:逐行读取文本,符合要求打印,否则不打印,这样即可完成数据的过滤。
    第一列时间的比较,如果格式符合 hh:mm:ss 的话直接用字符串比较即可。
    代码如下:

    # encoding=utf8
    path = "1.txt"
    f = open(path)
    last_date = ""
    last_num = 0
    for line in f:
        line = line.rstrip()
        item = line.split(" ")
        date = item[0]
        num = float(item[1])
        if date > last_date:  # 直接比较即可,字符串比较原理
            last_date = date
            print(line)
        elif date == last_date:
            if num > last_num:
                last_num = num
                print(line)
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败