Yancy1201 2022-05-31 21:26 采纳率: 100%
浏览 81
已结题

利用Python读取txt文件,并存入PDF转换的excel中

目的:读取txt文件的数据(NC程序),然后将pdf转为excel文件,将txt读取的数据放入excel中

目前进度:目前已经读取了txt文件的数据,也可以将想要的pdf文件转为excel,但是如何将txt提取的文件数据写入excel不会写了,不知道该用什么模块,该怎样链接两块代码

运行结果:可以单独运行读取txt文件数据,可以单独将pdf文件改写为excel文件,但是没法将txt的数据写入excel中

解答思路及思考的方法:自己尝试了在PDF程序后面再次进行读取excel文件,但是内容过长,效果不加
也尝试了在PDF转为excel之前将数据加入pdf中,但是失败了

想要的效果:想将txt读取的数据放入PDF转换的excel中

详细代码:
读取txt文件代码:
import re

f = open('gongxu1.nc','r')
something = f.readlines()
new = []
'''for x in something:
first = x.strip('\n')
second = first.split()
new.append(second)'''
T_checker = re.compile(r'T(\d)+')
Z_checker = re.compile(r'Z(-)?(\d)+(.)?(\d)*')
T_temp = 0
Z_temp = 0
result = []
for x in something:
T_get = T_checker.search(x)
if T_get != None:
T_temp = T_get.group()
Z_get = Z_checker.search(x)
if Z_get != None:
Z_temp = Z_get.group()
result.append([T_temp,Z_temp])
length = len(result)
def print_array(arr):
#use a breakpoint in the code line below to debug your script.
obj:dict = {} #暂时存储得空字典
for item in arr:
if not obj.get(item[0]): #从字典中找到key,如果没有,就赋值给空集里
obj[item[0]] = item[1]
elif float(obj.get(item[0])[1:]) > float(item[1][1:]): #从字典中取value,如果数值小就赋值给空集里
obj[item[0]] = item[1]
return [[x,y] for x,y in obj.items()]
if name == 'main':
final = print_array(result)
print(final)

读取PDF代码:

import pdfplumber
from openpyxl import Workbook

pdf_info =pdfplumber.open(r'tool.pdf')
meta_data = pdf_info.metadata # pdf的基础信息
page_con = len(pdf_info.pages) # 获取pdf的总页数
print('pdf文件的基础信息:\n', meta_data)
print('pdf共%s页' % page_con)

wb = Workbook() # 实例化一个工作簿对象
ws = wb.active # 获取第一个sheet
con = 0
try:
for page in pdf_info.pages:
for table in page.extract_tables():
for row in table:
row_list = [cell.replace('\n', ' ') if cell else '' for cell in row]
ws.append(row_list) # 写入数据
con += 1
print('分割线,第%s页' % con)
except Exception as e:
print('报错:', e)
finally:
wb.save('tool.xlsx')
print('写入完成!')
wb.close()

提取的excel数据示例:
[['T52', 'Z-15.'], ['T08', 'Z-1.8'], ['T53', 'Z-11.5']]

  • 写回答

3条回答

  • 一切因为有你 2022-05-31 22:35
    关注

    你已经写的差不多了,ws = wb.active 下面通过 wb.cell(行索引,列索引,value=值) 这种方式往里写就行了啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月13日
  • 已采纳回答 6月5日
  • 创建了问题 5月31日

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧