广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python将word文件转换成html
  • 130
分享到

怎么用Python将word文件转换成html

2023-06-04 11:06:54 130人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“怎么用python将Word文件转换成html”,在日常操作中,相信很多人在怎么用Python将word文件转换成html问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python将w

这篇文章主要介绍“怎么用pythonWord文件转换成html”,在日常操作中,相信很多人在怎么用Python将word文件转换成html问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python将word文件转换成html”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

 

最近公司一个客户大大购买了一堆医疗健康方面的科普文章,希望能放到我们正在开发的健康档案管理软件上。客户大大说,要智能推送!要掌握节奏!要深度学习!要让用户留恋网站无法自拔!

话说符合以上特点的我也只能联想到某榴了。

当然,万里长征的第一步是把文章导入我们的数据库项目使用的是AWS的dynamoDB,是非关系型数据库,所有内容都是以JSON的形式储存的。而客户大大购买来的文章,一共600多篇,要么是word要么是Adobeindesign的indd。找了一圈,没有发现合适的应用可以把word或indd转化成干净的html。所以我只能自己造轮子啦~听说python很擅长文本处理,所以就是你了,python!这是我第一次用python写项目,不符合规范的地方欢迎大神提点。

太长不看

用逆天的python 模块mammoth和docx 处理你的word文件;把indd批量转化成pdf然后用layout_scanner转化成html。

word批量转化为html

1、 建立文件结构并批量读取文件

在根目录下创建几个文件夹,用来放不同格式的文件,我把所有要处理的word文件放在docfiles 这个子目录里。word.py里写转化程序。

1.         ├── docfiles

2.          

3.         ├── imgs

4.          

5.         ├── inddfiles

6.          

7.         ├── output

8.          

9.         └── pdfs

10.       

11.      └── word.py

2、引入模块和申明文件路径

1.         import mammoth

2.         import mammoth.transfORMs

3.         import os

4.         from docx import Document

5.         from bson import json_util

6.         import zipfile

7.         import json

8.         import unidecode

9.         import requests

10.       

11.      guidUrl = "https://my.phrplus.com/REST/guid"

12.      inputPath= '/Users/admin/cwell/parser/docfiles/'

13.      imgPath = "/Users/admin/cwell/parser/imgs/"

14.      outputFile= '/Users/admin/cwell/parser/output/output.json'

mammoth: 核心组件,用来做转化工作

docx: 另一个做转化工作的模块,用来补充mammoth

os: 用来在系统中读取写入文件

zipfile: 用来解压word文档以提取图片

json: 用来把数据转化成json

bson: 用来配置写入json文件

unicode:用来处理字符

requests:用来调用api

3、转换单个文件

1.         styleMap = """

2.         p[style-name='Title']=> h2.hide

3.         p[style-name='Subhead1'] => h4

4.         p[style-name='ListBullet'] => ul.first > li:fresh

5.         p[style-name='ListBullet 2'] => ul.second > li:fresh

6.         p[style-name='Hyperlink']=>a.link

7.         """

8.         def convert_image(image):

9.             return {

10.              "src":""

11.          }

12.       

13.      def parseFile(f):

14.          document = Document(inputPath+f)

15.          article = {"Title":document.core_properties.title,"Content":""}

16.          with open(inputPath+f,"rb") as docFile:

17.              html =mammoth.convert_to_html(docFile,style_map=styleMap,convert_image=mammoth.images.img_element(convert_image))

18.              decoded =unidecode.unidecode(html.value)

19.       

20.       

21.          if not article["Title"]:

22.              for para in document.paragraphs:

23.                  if para.style.name == 'Title':

24.                     if para.text:

25.                         article["Title"] = para.text

26.       

27.          article["Content"]=decoded

28.          return article 

parseFile就是核心功能了。传递进来的参数f是文件名,和文件路径合在一起能够帮我们准确定位要转化的文件。首先用docx找到文档的标题,并创建一个dictionary,里面包含标题和内容。然后用mammoth转化整个文件。注意命令中要用到stylemap和convertimage。前者用来规定转化规则:'style-name'是word里的式样名称,用word打开文档,点击任意一个元素可以查看其式样名称;这里规定标题转化为h2,副标题转化为h3等等。关于列表的转化规则这里就不详细叙述了,具体可以参考下面的文章:

参考链接

1.         Converting docx to clean HTML: handling the XMLstructure mismatch

'convert_image' 是用来规定图片的转化方式的,由于我准备之后批处理所有文档中的图片,在这里就告诉程序不储存任何图片信息。但是于此同时保留图片的img tag以便标注图片在文档中的位置。如果不规定任何转化方式,生成的html里面会包含一大长串base64的图片信息。

mammoth转化出来的html是含有unicode的,不知道为什么python里跑一直报错,就用unicode解码了一下。

这之后,如果前面的程序没有抓取到文档标题,用docx换个姿势再抓取一下。

最后返回article这个dictionary。

4、抓取图片

1.         def extractImage(f):

2.             ziped = zipfile.ZipFile(inputPath+f)

3.             allFiles = ziped.namelist()

4.             imgs = filter(lambda x: x.startswith('word/media/'),allFiles)

5.             imgNameArr = []

6.             for img in imgs:

7.                 res =requests.post(guidUrl)

8.                 if res.status_code is 200:

9.                     guid= res.text

10.                  data= ziped.read(img,imgPath)

11.                 idxStr = os.path.basename(img).split(".")[0][-1:]

12.                 imgDict = {}

13.                 imgDict["index"] = int(idxStr)-1

14.                 imgDict["fileName"] = guid+".jpg"

15.                 imgNameArr.append(imgDict)

16.                 targetPath = os.path.join(imgPath,guid+".jpg")

17.                 target = open(targetPath,"wb")

18.                 target.write(data)

19.                 target.close()

20.          ziped.close()

21.          return imgNameArr

没想到word文档其实是一个压缩文件吧?如果直接把word文档的后缀名改成zip然后再用解压软件查看,会看到一个media文件夹,里面就包含所有插入的图片。

用ziped读取文档,然后找到存放图片的media文件夹,每一个图片重新用guid命名,生成一个dictionary,里面包含的信息有“此图片在文档中出现的顺序”和文件名。话说media中的图片都被按照顺序重新命名为image1.png, image2.png,刚好为我们抓取顺序信息提供了方便。

(python也有生成guid的模块,我在这里调用api有点多此一举,但是为了和项目中其他图片需要用到的uuidv4保持一致还是用了)

之后就是把图片存在‘imgs’这个文件夹下。

5、生成json

1.         def processDocs(path):

2.             result = []

3.             for f in os.listdir(path):

4.                 if not f.startswith('.'):

5.                    imgNameArr = extractImage(f)

6.                    article = parseFile(f)

7.                    fileName = os.path.basename(f)

8.                    contentArr = article["Content"].split("<img")

9.                     for idx,section in enumerate(contentArr):

10.                     for info in imgNameArr:

11.                         if idx is info["index"]:

12.                             contentArr[idx] = section+"<img alt='"+info["fileName"]+"'data-fileName='"+info["fileName"]+"'"

13.       

14.                 article["Content"] = ''.join(contentArr)

15.                 result.append(article)

16.       

17.       

18.          with open(outputFile,'w+') as f:

19.              json.dump(result,f,default=json_util.default)

最后要用到的一个function就是写个循环挨个处理docfiles文件夹底下的文件了。针对每一个文件,记得把之前生成的图片信息的数组map到html里,然后在写入到json文件里就大功告成了!

indd转化为html

话说,到现在为止,我还没有找到一个完美的解决方案。我使用了相同的思路,把indd先批量生成为pdf(有一个indesign 脚本就是专门批量转化pdf的),然后用了一个叫做layout_scanner的GitHub项目抓取pdf信息并转化为html。最后生成的html包含了文字和图片,但是图标和排版就保存不下来了。客户大大表示不满意。我也很惆怅啊!机智的小伙伴们如果有更好的思路请务必告诉我!如果需要我详细说明一下这一块内容,我会更新在这篇文章中。

到此,关于“怎么用Python将word文件转换成html”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么用Python将word文件转换成html

本文链接: https://www.lsjlt.com/news/237564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Python将word文件转换成html
    这篇文章主要介绍“怎么用Python将word文件转换成html”,在日常操作中,相信很多人在怎么用Python将word文件转换成html问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python将w...
    99+
    2023-06-04
  • 如何将HTML文件转换成Word文档
    随着互联网和信息技术的不断进步,越来越多的人开始使用网页来展示和传递信息。然而,有些情况下我们需要将网页的内容转换成Word文档,例如需要打印文档、需要在Word中编辑等。本文将介绍如何将HTML文件转换成Word文档。一、使用在线转换工具...
    99+
    2023-05-14
  • python怎么将pdf转换成word
    您可以使用Python中的pytesseract库将PDF文件转换为文本,然后使用Python-docx库将文本转换为Word文档。...
    99+
    2023-09-22
    python
  • 怎么使用POI将HTML文件转换为Word文档
    这篇文章主要讲解了“怎么使用POI将HTML文件转换为Word文档”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用POI将HTML文件转换为Word文档”吧!首先,我们需要在代码中添加...
    99+
    2023-07-06
  • 怎么将html文件转换成jsp
    本篇文章给大家分享的是有关怎么将html文件转换成jsp,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更...
    99+
    2023-06-14
  • 使用python怎么将Word转换成pdf
    这篇文章将为大家详细讲解有关使用python怎么将Word转换成pdf,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python的五大特点是什么python的五大特点:1.简单易学,开发程序...
    99+
    2023-06-14
  • html文件怎么转成word
    这篇文章主要介绍了html文件怎么转成word,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方...
    99+
    2023-06-14
  • C#怎么将Word或Excel文档转换为Html文件
    这篇文章主要介绍“C#怎么将Word或Excel文档转换为Html文件”,在日常操作中,相信很多人在C#怎么将Word或Excel文档转换为Html文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#怎么将...
    99+
    2023-07-02
  • 怎么将文件PDF格式转换成Word格式
    这篇文章给大家分享的是有关怎么将文件PDF格式转换成Word格式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。(1)打开手机,在手机上的应用市场上搜索“PDF转换大师”,找到可以转换文档格式的工具,将其下载到手机...
    99+
    2023-06-05
  • ofd文件怎么转换成word
    这篇文章主要介绍“ofd文件怎么转换成word”,在日常操作中,相信很多人在ofd文件怎么转换成word问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ofd文件怎么转换成word”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-02
  • C#将Word或Excel文档转换为Html文件
    这个是CodeProject上的一篇文章:Microsoft Interop API to convert the .doc, .docx, .dot, .dotx and .xls...
    99+
    2022-11-13
  • 怎么将xdf文件转换为word文档
    这篇文章将为大家详细讲解有关怎么将xdf文件转换为word文档,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。把xdf文件转为word文档的方法找到一篇XDF文档,并使用稻壳阅读器打开打开xd...
    99+
    2023-06-14
  • php怎么将word文档转成PDF文件
    在如今数字化的时代,文档转换成PDF(Portable Document Format)是十分常见的需求,因为PDF是一种跨平台、适用于多种设备和操作系统的文件格式,具有良好的兼容性和可靠的可读性。而php作为一种强大的服务器端编程语言,可...
    99+
    2023-05-14
    php
  • 怎么在将html转换为word文档格式
    怎么在将html转换为word文档格式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、首先在HTML网页任意位置点击鼠标右键,选择“网页另存为”。2、根据需要将HTML网...
    99+
    2023-06-14
  • 怎么通过POI将HTML转换为Word文档
    本文小编为大家详细介绍“怎么通过POI将HTML转换为Word文档”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么通过POI将HTML转换为Word文档”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,我们...
    99+
    2023-07-06
  • 如何利用Python将html转为pdf、word文件
    目录前言转 pdf安装 pdfkit 库安装 wkhtmltopdf 文件url 生成 pdf本地 html 文件生成 pdf转 word安装 pypandoc 库安装 pandoc...
    99+
    2022-12-19
    python将html转pdf python将html转word python pdf处理
  • php怎么将word转换为html格式
    本篇内容主要讲解“php怎么将word转换为html格式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么将word转换为html格式”吧!PHP将上传word文件,转化为Html格式,(...
    99+
    2023-06-20
  • 怎么将html转换成excel
    这篇文章将为大家详细讲解有关怎么将html转换成excel,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。html是什么html的全称为超文本标记语言,它是一种标记语言,包含了一系列标签.通过这些标签可以将...
    99+
    2023-06-14
  • java怎么将Word文档转为HTML
    Java 是一种广泛使用的编程语言,它可以通过编写代码实现进行各种计算和数据处理任务。在 Java 中,我们可以使用不同的 API 实现将 Word 文档转换为 HTML。在这篇文章中,我们将着重讨论使用 Apache POI(Java A...
    99+
    2023-05-14
  • php怎么将xml文件转换为html
    本篇内容主要讲解“php怎么将xml文件转换为html”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么将xml文件转换为html”吧!test.xml:...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作