txt 文件中的数据如图所示
可以看出数据其实大致可以分为两部分,最上面的 fields 中的字段与下面的若干组数字是一一对应的关系,因此为了便于阅读和后续处理以及数据可视化,可以用 Excel 来保存这些数据。
代码思路为将 fields 的字段作为 Excel 文件中的每列的列名,然后把下面每组的数据写进每行。另外为了代码方便处理,我将 txt 文件分成两部分,一个文件只用来保存 fields,也就是需要写进 Excel 中的列名;另一个文件只保存大量的数据,也就是需要写进 Excel 中每行的数据。
代码以及注释如下:
import pandas as pd
# 定义数据文件的路径
file_path = "/Users/Desktop/data.txt" # 将 "/Users/Desktop/data.txt" 替换为实际的文件路径
#读取txt列名
def openreadtxt(file_name):
data = []
file = open(file_name,'r') #打开文件
file_data = file.readlines() #读取所有行
for row in file_data:
tmp_list = row.split(' ') #按‘,’切分每行的数据
tmp_list[-1] = tmp_list[-1].replace('\n',',') #去掉换行符
data.append(tmp_list) #将每行数据插入data中
return data
#用逗号分隔字符串
def Convert(string):
li = list(string.split(","))
return li
if __name__=="__main__":
head_data = openreadtxt('/Users/Desktop/head.txt') #读取列名数据
str_head = "".join(head_data[0]) #将列表数据转换为字符串数据
list_head = Convert(str_head) #再将字符串转换为列表,方便写入到Excel中,不同列名用逗号分隔。
list_head.remove('') #去除多余的字符
# 创建一个DataFrame,将数据列表作为数据,以及列名列表作为列名
column_names = list_head
# 创建一个空的DataFrame
df = pd.DataFrame(columns=column_names)
# 打开数据文件,逐段读取数据并写入DataFrame
with open(file_path, 'r') as file:
data_segment = [] # 用于存储当前数据段的行
for line in file:
line = line.strip() # 去除行末尾的换行符
row = line.split(',') # 数据是以逗号分隔的
if len(row) == len(column_names):
data_segment.extend(row) # 将当前行的数据添加到当前数据段
if len(data_segment) == len(column_names): # 检查数据段的长度是否为217,也就是是否和列名一一对应。
df = pd.concat([df, pd.DataFrame([data_segment], columns=column_names)], ignore_index=True) # 将当前数据段添加到DataFrame中
data_segment = [] # 重置当前数据段
# 将DataFrame写入Excel文件
df.to_excel('dataoutput.xlsx', index=False)