鱼C论坛

 找回密码
 立即注册
查看: 2920|回复: 18

[已解决]批量txt文本转换成xlsx文件,用python

[复制链接]
发表于 2020-6-10 11:35:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大佬们,我有大量txt文本数据,每个文本内容格式一致,需要批量将文本内的数据转换成xlsx或xls并另存文件(文件名与txt文件保持一致)
.有没有大佬教一教我啊
附件是TXT文件及转换后文件截图
最佳答案
2020-6-10 15:28:52

把data.to_excel("%s.xlsx" %new_name,header =None)
改成
data.to_csv("%s.csv" %new_name,header =None)
重新进行刚才的步骤

因为xlsx格式的文件比较特殊
保存成csv文件就可以进行excel的加减乘除了
Snipaste_2020-06-10_11-28-21.png

txt.zip

50.79 KB, 下载次数: 12

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-10 11:35:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 12:46:10 | 显示全部楼层
本帖最后由 BIO-张磊 于 2020-6-10 13:08 编辑

我试过了,你这不是txt文件格式,分割符不是\t,是空格,请把标准的txt文件格式发上来,如果按照你发的这个以空格作为分隔符的txt文件,可以试试在面的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 13:07:36 | 显示全部楼层
import pandas as pd##没有这个就pip install pandas
import os

file = os.listdir(".")#把你所有的txt文件夹放在一个目录下,再把这个代码文件也放在这个目录下

for each in file:
        if os.path.splitext(each)[1] == ".py":
                continue
        
        else:
                data = pd.read_csv(each,sep = "[ ]+")
                new_name = os.path.splitext(each)[0]
                
                data.to_excel("%s.xlsx" %new_name,header =None)##如果那个bq-BMS Log File不重要,可以去掉
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 13:26:53 | 显示全部楼层
BIO-张磊 发表于 2020-6-10 12:46
我试过了,你这不是txt文件格式,分割符不是\t,是空格,请把标准的txt文件格式发上来,如果按照你发的这个 ...

就是附件中的文本文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 13:32:10 | 显示全部楼层
452046297 发表于 2020-6-10 13:26
就是附件中的文本文件

我知道,所以我说你这个txt文件是假的,真正的txt文件分隔符是\t,你这个是空格,可能你不明白我说的是什么。但是我下面给你的代码可以解决你的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 13:58:17 | 显示全部楼层
BIO-张磊 发表于 2020-6-10 13:32
我知道,所以我说你这个txt文件是假的,真正的txt文件分隔符是\t,你这个是空格,可能你不明白我说的是什 ...

Warning (from warnings module):
  File "C:\Users\jie.ding\Desktop\Code\txtzhuan.py", line 11
    data = pd.read_csv(each,sep = "[ ]+")
ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
Traceback (most recent call last):
  File "C:\Users\jie.ding\Desktop\Code\txtzhuan.py", line 11, in <module>
    data = pd.read_csv(each,sep = "[ ]+")
  File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 685, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 457, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 895, in __init__
    self._make_engine(self.engine)
  File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 1147, in _make_engine
    self._engine = klass(self.f, **self.options)
  File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\parsers.py", line 2288, in __init__
    f, handles = _get_handle(
  File "C:\Users\jie.ding\AppData\Local\Programs\Python\Python38-32\pandas\io\common.py", line 402, in _get_handle
    f = open(path_or_buf, mode, errors="replace", newline="")
PermissionError: [Errno 13] Permission denied: '.idea'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 14:09:53 | 显示全部楼层
452046297 发表于 2020-6-10 13:58
Warning (from warnings module):
  File "C:%users\jie.ding\Desktop\Code\txtzhuan.py", line 11
    ...

改成
data = pd.read_csv(each,sep = "[ ]+",engine = "python")
或者
data = pd.read_csv(each,sep = "[ ]+",engine = 'python')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 14:20:40 | 显示全部楼层
BIO-张磊 发表于 2020-6-10 14:09
改成
data = pd.read_csv(each,sep = "[ ]+",engine = "python")
或者

还是一样的报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 14:26:25 | 显示全部楼层

那就是你抄写的代码或者操作步骤或者你的文件格式有问题了,我用你给的文件这个代码试过了是可行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 14:36:50 | 显示全部楼层
还有一种可能,你按照我说的步骤来,
第一步,新建一个目录,把所有txt文件拷贝过来,
第二步,你把写好的代码保存成一个文件,拷贝到这个目录里
第三部,双击代码,运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 14:53:57 | 显示全部楼层
BIO-张磊 发表于 2020-6-10 14:36
还有一种可能,你按照我说的步骤来,
第一步,新建一个目录,把所有txt文件拷贝过来,
第二步,你把写好 ...

可以了,除了第一列是时间,第一行标题,其他的需要转换成数值,有办法实现吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 14:58:09 | 显示全部楼层
452046297 发表于 2020-6-10 14:53
可以了,除了第一列是时间,第一行标题,其他的需要转换成数值,有办法实现吗?

不明白你在说什么,举个例子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 15:16:52 | 显示全部楼层
BIO-张磊 发表于 2020-6-10 14:58
不明白你在说什么,举个例子


                               
登录/注册后可看大图

如红色框中数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 15:18:15 | 显示全部楼层

请不要@人
有人看到就回答了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 15:19:18 | 显示全部楼层
qiuyouzhi 发表于 2020-6-10 15:18
请不要@人
有人看到就回答了

好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 15:28:52 | 显示全部楼层    本楼为最佳答案   

把data.to_excel("%s.xlsx" %new_name,header =None)
改成
data.to_csv("%s.csv" %new_name,header =None)
重新进行刚才的步骤

因为xlsx格式的文件比较特殊
保存成csv文件就可以进行excel的加减乘除了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 16:00:10 | 显示全部楼层
BIO-张磊 发表于 2020-6-10 15:28
把data.to_excel("%s.xlsx" %new_name,header =None)
改成
data.to_csv("%s.csv" %new_name,header =No ...

完美解决,感谢
现在还有最后一个问题,我打包成exe文件不能运行是什么原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-10 16:26:21 | 显示全部楼层
452046297 发表于 2020-6-10 16:00
完美解决,感谢
现在还有最后一个问题,我打包成exe文件不能运行是什么原因

把if os.path.splitext(each)[1] == ".py"
改成
if os.path.splitext(each)[1] != ".txt"
再打包
如果不行,我就不会了,python打包是个玄学。所以python只适合自己坐坐小脚本,不适合做稳定软件
如果满意上面的答案请给最加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 19:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表