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 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题