python把excel转成word

Python Word文档转ExcelPython Word文档转Excel

一.根据客户需求把文件夹里所有的Word文档转换成Excel格式

Wrod格式如下:

Python Word文档转Excel

Python Word文档转Excel

转换后Excel格式如下:

Python Word文档转Excel

具体要求:word文档中带有5位数字1行转为,序号和方名各1列,后面对应带有【】标签里的内容各1列。如果方名下一行没有含有【】的,数据单独放在备注那1列。有的时候同1个【】内容,会持续两段。需要重新放在一起。

整体思路:带方号的行均保护5位数字,可用正则匹配方号和方名,不包含5位数字的行再次判断是否包含‘【】’,包含‘【】’的行用正则匹配中间的所有字符就是列名,不包含5位数字也不包含‘【】’的行就是需要放备注的内容

实施步骤:

1.导入库

import docximport osimport reimport pandas as pd

2.收集所有word文件名

#指定word文件存放的文件夹input_path=os.path.join(os.getcwd(),"word")#遍历文件夹中所有word文件名f_lst=os.listdir(input_path)f_lst

3.生成模板表

#生成模板表和EXCEL列名cols=["组成","用法","功用","主治","备考","方论","方论选录","方药","功能","功效","加减","禁忌","临床报道","临床举例","实验研究","现代研究","宜忌","异名","制法"]df=pd.DataFrame({"序号":[],"方名":[]})moban=df.copy()moban

4.核心代码

def word2excel(input_path,f_name,df): #读取word文档 doc = docx.Document(os.path.join(input_path,f_name)) #行计数 count=0 #遍历word文档中所有行 for paragraph in doc.paragraphs: #判断行是否包含5位数字 if len(re.findall("^[0-9]{5}", paragraph.text))>0: #正则匹配5位数赋值给变量序号 result = re.findall("[0-9]{5}", paragraph.text) df.loc[count,"序号"]=result[0] #正则匹配5位数后面所有字符赋值给变量方名 result2 = re.findall("[0-9]{5}(.*)", paragraph.text) df.loc[count,"方名"]=result2[0] #换行 count+=1 #print(paragraph.text) #不包含5位数字的行再次判断是否包含‘【】’ elif len(re.findall("[【](.*)[】]", paragraph.text))>0: #print(paragraph.text) #包含‘【】’的行用正则匹配中间的所有字符 result1 = re.findall("[【](.*)[】]", paragraph.text) #判断是否在列名数组中 if result1[0] in cols: #正则匹配‘】’后所有字符并写入对应列行 result3 = re.findall("[】](.*)", paragraph.text) df.loc[count-1,result1[0]]=result3 #不包含5位数字也不包含‘【】’的行 else: #判断是否为空 if len(paragraph.text)>0: #写入备注 df.loc[count-1,"备注"]=paragraph.text #print(paragraph.text) return df

5.依次对所有文档进行处理并保存

for i in f_lst: tmp_df=word2excel(input_path,i,moban) df=pd.concat([df,tmp_df])df.to_excel("1.xlsx")

二.根据客户需求把txt文档中内容替换成excel中的知道内容

Python Word文档转Excel

#导入库import xlrddef delblankline(infile, outfile): #打开指定文本文件 infopen = open(infile, 'r', encoding="utf-8") # 新建指定文本文件 outfopen = open(outfile, 'w', encoding="utf-8") # 打开指定EXCEL文件 wb = xlrd.open_workbook("2.xlsx") sh = wb.sheet_by_name("Sheet1") #查看总行 print(sh.nrows) #遍历所有行 db = infopen.read() for i in range(0, sh.nrows): #得到A、B列数据 name1 = sh.cell(i, 0).value name2 = sh.cell(i, 1).value print(name1) #查找替换数据 db = db.replace(name1, name2) print(i) outfopen.write(db) infopen.close() outfopen.close()delblankline("2.txt", "02.txt")print("完成")

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年 9月 13日 下午4:10
下一篇 2023年 9月 13日 下午4:16

相关推荐

  • 简单实用的无线路由器设置方法

    无线上网,再正常不过的方式,但很多朋友不知道如何设置网络。下面我以TPLINK无线路由器为例来分图讲解一下: 基本条件 宽带已经通到家里,光猫一切正常。可用的路由器一台已正确连接到…

    2023年 6月 3日
  • 新的手机号绑着别的支付宝怎么办

    使用新号码注册支付宝时,页面出现了一个女孩的头像。大连小伙小吕发现,自己新办的手机号绑着别人的支付宝,自己不仅能看到这个账户的资金往来,而且还能转账。“这张电话卡原主人不用了,却依…

    2023年 6月 8日
  • 天猫魔盒3pro技巧

    天猫魔盒于今年9月份推出了一款售价299元的新品——天猫魔盒3 Pro。该机有意的外观+强悍的硬件,辅以丰富的内容,未来销量可期。混迹盒子市场多年,小编觉得是时候给已经入手3 Pr…

    2023年 6月 1日
  • 好消息怎么用语言表达

    你是否接到过 以“00”或“+”开头的诈骗电话 注意 这些都是境外号码 诈骗分子利用这些号码给你打电话 谎称自己是 国家机关工作人员、电商客服 或是你的熟人或领导 千万不要相信 根…

    2023年 8月 5日
  • 天府市民云上面怎么查银行卡

    红星新闻记者从天府市民云公司获悉,18日起,经成都银行授权,天府市民云APP上线了站内首个银行账户服务,支持市民查询本人名下成都银行银行卡账户信息、余额、流水明细。 经尝试后,记者…

    2023年 7月 4日
  • 12306优化网上购票(12306这个实用功能您不妨了解一下)

    这是全球访问量最大 交易量最大的 在线票务系统—— 铁路12306客户服务系统 铁路12306APP 其功能不断丰富完善 服务不断迭代升级 目前,铁路12306APP已经具备网络购…

    2022年 12月 22日
  • wifi提速的终极秘诀来了(wifi提速的几个小妙招)

    (中国计算机世界出版服务公司出品) 前两期微信《你的办公室WiFi太慢,可能是被它干扰了!》和《哪些安全隐患会导致网速突然变慢?》分享了如何解决WiFi干扰、拥堵和安全问题。今天继…

    2023年 8月 16日
  • 在家也能拍出生日感大片

    生日蛋糕合影这么拍! 如何自己拍一组赞爆朋友圈的生日大片? ·首先穿一条漂亮到家的公主裙,再找一面绿布背景。要没条件的家里白墙应该都有吧?主要为了方便后期p图,我挑了几个姿势,亲测…

    2023年 6月 19日
  • 如何把微信图片转换成word文档

    微信图片怎么转换成word文档?微信是一款非常流行的社交软件,我们在日常生活中经常使用它来聊天、分享照片、视频等内容。但是,有时候我们可能需要将微信中的图片文字转换成word文档,…

    2023年 4月 11日
  • 家里如何装监控才安全(家中有摄像头怎么装监控)

    前言 自从在县城买了房之后,家里的老房子就只剩下奶奶一个人。本来打算将老人一起带到县城居住,但是老人家始终还是觉得家里的老房子住着舒服,周围也都是认识的人,平时也可以一起唠唠嗑。但…

    2023年 9月 12日