使用python批量提取txt中的数据并写入excel

博主作为编程新手,利用Python解决批量提取txt文件数据并导入Excel的问题。通过numpy的loadtxt函数跳过标签行读取数据,再用glob模块获取文件名,结合openpyxl写入Excel,有效提高了工作效率。
部署运行你感兴趣的模型镜像

本人是编程小白,同时也是一名准毕业研究生,在处理众多数据时总是要花很多时间来做重复的工作以提取出需要的数据,让我十分头疼。我无法忍受这种低效的工作,于是便开始尝试使用Python进行编程来批量处理数据。我把我编程之路上的历程写下来有三个目的:(1)为了发泄初次使用编程成功解决科研工作中问题的兴奋感(2)记录我在这个过程中遇到的问题和解决问题的方法(3)警示我以后在面对问题时记得用编程来提高效率。接下来开始第一次分享我遇到的一个案例:
一、问题描述
通过模拟获得以下56组保存在txt中的数据,
在这里插入图片描述
每组数据中内容如下:
在这里插入图片描述
需要将每组数据中的第五列提取出来并保存在excel中以便分析

二、使用numpy读取txt数据
首先考虑如何读取单个txt中数据,这里使用numpy中loadtxt()函数,代码如下:

import numpy as np   #引用numpy
array = np.loadtxt('1.txt',dtype=np.str,delimiter='\t') #读取1.txt,数据类型为字符串,分隔符号为tab

运行报错
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210112170745933.png
显示第二行列数错误,原因是前三行是标签行,每行数量元素不统一,于是使用skiprows跳过前三行

import numpy as np
array = np.loadtxt('1.txt',dtype=np.str,delimiter='\t',skiprows=3)  #从第四行开始读取

运行没有报错,数据导出正常
以上参考https://blog.youkuaiyun.com/weixin_39609051/article/details/111062501

三、使用glob获取当前文件夹文件,批量读取并写入excel
上面实现了单个txt中数据读取,这太慢了,如果可以批量读取当前文件夹内所有txt文件,并且写入到excel中就好了。这里通过python内置的glob模块来实现,代码如下:

import glob
flist = glob.glob('*.txt')
print(flist)

运行结果如下:
在这里插入图片描述
这样就得到了一个列表,列表中包含当前文件夹中所有txt名称,然后将glob应用到数据读取中,并使用openpyxl将读取的数据写入到excel:

import glob   #引用glob
import numpy as np   #引用numpy
from openpyxl import load_workbook   #引用openpyxl的load_workbook


flist = glob.glob('*.txt')   #读取当前文件夹所有txt,并存入列表
wb = load_workbook('data.xlsx')   #打开要保存数据的excel
sheet = wb['Sheet1']   #打开要保存数据的sheet
i=1   #序数,用来将从txt提取的数据存储到excel的不同列


for filename in flist:   #利用for循环逐个读取txt文件
    array = np.loadtxt(filename,dtype=np.str,delimiter='\t',skiprows=3)   #将当前读取的txt文件数据存储矩阵
    number_row = array.shape[0]   #获取数据矩阵行数
    for j in range(number_row):   
        sheet.cell(j+1,i).value = float(array[j][4])   #将需要用的第五列数据存储在excel中
    i = i+1   
    
wb.save('data.xlsx')   #保存excel文件并退出

运行没有报错,需要的数据已经有序地保存在excel中啦
在这里插入图片描述
每个数据都站到了自己应该站的位置,太整齐啦哈哈!

以上就是我遇到并解决的第一个问题啦。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值