分块拆分txt文件中的数据
代码:
# -*- coding:utf-8 -*-
# 读取txt文件中的数据
file = open("数据.txt")
lines = file.readlines()
# print(lines[:5])
data = {} # 储存分割的数据
line_list = [] # 中转列表
last_id = "start" # 数据分块标识
for line in lines:
row_data = line.split(" ") # 将一行数据按空格分隔
ID = row_data[0] # 获得ID
if last_id == "start": # 用于处理数据第一行
line_list.append(line) # 将第一行数据放入中转列表
else: # 不是第一行数据,则按如下执行
if ID != last_id: # 如果出现新的数据块
if last_id in data: # 新的数据块的ID已存在字典data中
data[last_id].append(line_list) # 将中转列表的数据添加到对应的ID中
else: # 新的数据快的ID不在字典data中
data[last_id] = [line_list] # 将上一个数据块加入对应的ID
line_list = [line] # 将中转列表清空,并放入新数据快的第一行数据
else: # 没出现新的数据块
line_list.append(line) # 将数据继续加入中转列表
last_id = ID # 每处理一行,将分块标识last_id更行为最新的ID
# 将最后一个文字块的数据放入字典
if last_id in data:
data[last_id].append(line_list)
else:
data[last_id] = [line_list]
# print(data['89031'])
# for i in data.keys():
# for block in data[i]:
# print(block)
# print("- -"*50)
# 写入数据函数
def to_txt(filename, data_list): # filename为写入文件的名字,data为要写入数据列表
file = open("分块\\" + filename + '.txt', 'a')
for i in range(len(data_list)):
file.write(data_list[i])
file.close() # 保存数据并关闭
# 批量写入数据
for ID in data.keys():
for i in range(len(data[ID])):
to_txt(f"{ID}_{i+1}", data[ID][i])