Python实现Word⽂档转换Markdown的⽰例
随着SaaS服务的流⾏,越来越多的⼈选择在各个平台上编写⽂档,制作表格并进⾏分享。
同时,随着Markdown语法的破圈,很多平台开始集成⽀持这种简洁的书写标记语⾔,这样可以保证平台上⽤户⽂档样式的统⼀性。
但是在⼀些场景下,我们还是会在本地的Office软件上写有很多⽂档,或者历史遗留了很多本地⽂档。
如果我们需要将其上传到各⼤平台,直接复制粘贴,⼤概率是会造成⽂档内容结构和样式的丢失。于此我们需要将其转换为Markdown 语法。
很多桌⾯软件(⽐如Typora)都提供了导⼊ Word ⽂件的功能,这类功能⼀般是通过 Pandoc 这个软件来扩展实现的。
Pandoc 是⼀个全能型的⽂档格式转换⼯具,其能够将多种⽂档格式转换为各类常见的⽂档格式。具体的⽂档格式之间的转换如下图所⽰(来源于官⽹):
Pandoc 是瑞⼠军⼑⼀般的存在,能够较好的处理各类的⽂档格式转换,但是如果我们需要⾃⼰写程序,调⽤ Pandoc 则需要额外的安装 Pandoc 才⾏,并且也不⽅便⾃定义。
幸⽽,在 Python 中有很多第三⽅模块提供了此类⽂档格式的转换功能。今天,我们来实现⼀下⽐较频繁使⽤到的 Word ⽂档转 Markdown ⽂档。
转换逻辑
Word ⽂档到 Markdown ⽂档的转换总体⽽⾔分两步来实现:
第⼀步,将 Word ⽂档转换为 HTML ⽂档;
第⼆步,将 HTML ⽂档转换为 Markdown ⽂档;
python怎么读取桌面上的文件依赖模块
要实现这个功能我们需要借助 Python 的两个第三⽅模块:
mammoth
markdownify
mammoth 是⼀个⽤于将 Word ⽂档转换为 HTML 的模块,它⽀持在 Python、JavaScript、Java、.Net等平台使⽤。⽽markdownify 则是将 HTML 转换为 Markdown ⽂档的模块。
处理 Word 图⽚
因为 Word ⽂档中不可避免地会存在很多图⽚,为了在转换后的⽂档中能够正确地显⽰图⽚,我们需要⾃定义⼀下Word ⽂档内图⽚的处理⽅式。默认情况下,mammoth 会将图⽚转换为 base64 编码的字符串,这样不⽤⽣成额外的本地图⽚⽂件,但是会使⽂档体积变得很⼤。所以我们选择将图⽚另存为本地图⽚:
# 转存Word⽂档内的图⽚
def convert_img(image):
with image.open() as image_bytes:
file_suffix = t_type.split("/")[1]
path_file = "./img/{}.{}".format(str(time.time()),file_suffix)
with open(path_file, 'wb') as f:
f.write(ad())
return {"src":path_file}
正式转换
在这⾥,我们以州的先⽣很久以前写的《Python爬⾍实战与机器学习应⽤》(需要这本书的⼩伙伴可以私聊我)这本书的 Word ⽂档来演⽰。
代码如下所⽰:
# 读取Word⽂件
with open(r"F:\⾃媒体\Python爬⾍实战与机器学习应⽤.docx" ,"rb") as docx_file:
# 转化Word⽂档为HTML
result = vert_to_html(docx_file,convert_image=mammoth.images.img_element(convert_img))
# 获取HTML内容
html = result.value
# 转化HTML为Markdown
md = markdownify(html,heading_)
print(md)
with open("./docx_to_html.html",'w',encoding='utf-8') as html_file,open("./docx_to_md.md","w",encoding='utf-8') as md_file:
html_file.write(html)
md_file.write(md)
messages = ssages
运⾏程序,最终⽣成2个⽂件:
docx_to_html.html
docx_to_md.md
其中,docx_to_html.html 是 Word ⽂档转换为 HTML 后的⽂档:
docx_to_md.md 是 HTML 转换为 Markdown 后的⽂档:
最后是另存为的图⽚:
怎么样,简单的⼆三⼗⾏代码就完成了 Word 到 Markdown ⽂档的转换,是不是很简单?
此功能将集成到觅道⽂档作为⽂档导⼊的功能实现,欢迎持续进⾏关注!
⽂章版权所有:
以上就是Python实现Word⽂档转换Markdown的⽰例的详细内容,更多关于python Word⽂档转换Markdown的资料请关注其它相关⽂章!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。