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)
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码