使用python读取txt文件中的离散表格数据再写入到Excel中

txt 文件中的数据如图所示

image.png

可以看出数据其实大致可以分为两部分,最上面的 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)
    




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值