删除文件中每个标签最后几行数据

文本文件中有两列
第一列是标签
第二列是对应的值
使用逗号分隔
例如:2,1+1
但因为一些问题,这个标签并不是每行都一一对应的,每个标签的后5行是错误的,所以需要删除这5行
例如:

2,1+1
2,3-1
2,1+2 错误数据
2,1+3 错误数据
2,1+4 错误数据
2,1+5 错误数据
2,1+6 错误数据
3,1+2
...

上面例子中

2,1+2
2,1+3
2,1+4
2,1+5
2,1+6

是问题数据,需要删除,下面上代码

# 打开存在错误数据的文件
dict_file = open('dictionary.csv','r',encoding='utf-8')
dict_values = dict_file.readlines()
dict_file.close()
# 这个是写入处理后数据的文件
dict_file_correct = open('dictionary_correct.csv','w',encoding='utf-8')
# 定义一个临时列表,初始化值是错误数据文件的第一行,因为不定义初始化的话会丢掉第一行数据
temp_list = [dict_values[0]]
# 使用行索引读取数据,这样可以用当前行和迁移行的标签做比较
for n in range(1,len(dict_values)):
  line_list = dict_values[n].strip().split(',') #用逗号拆分出标签和值
  line_list_last = dict_values[n-1].strip().split(',') #拆分前一行的标签和值
  temp_list.append(dict_values[n]) #行内容插入临时列表中
  # 如果当前行标签和上一行的标签不一样了,证明前面的标签读完了
  if line_list[0] != line_list_last[0]:
    # 只读取临时列表中的1到len(temp_list)-(5+1)行,+1行是因为读到新的标签行了
    for nn in range(len(temp_list) - 6):
      dict_file_correct.write(temp_list[nn]) #把内容写入到文件里
    temp_list = [dict_values[n]] #重新初始化临时列表
dict_file_correct.close()

 

posted @ 2022-12-30 17:03  咻_python  阅读(67)  评论(0编辑  收藏  举报