单页站如何做网站seo优化,WordPress文章数据表,有没有给别人做图赚钱的网站,做官网设计好的公司一、微软Word历史、背景#xff1a;
Word 的特异功能就是把那些应该写成简单的 TXT 或 PDF 格式的文件#xff0c;变成了既大又慢且难以打开的怪兽#xff0c;它们经常在系统切换和版本切换中出现格式不兼容#xff0c;而且因为某些原因在文件内容已经定稿后仍处于可编辑的…一、微软Word历史、背景
Word 的特异功能就是把那些应该写成简单的 TXT 或 PDF 格式的文件变成了既大又慢且难以打开的怪兽它们经常在系统切换和版本切换中出现格式不兼容而且因为某些原因在文件内容已经定稿后仍处于可编辑的状态。Word 文件从未打算让人频繁传递。不过它们在一些网站上很流行包括重要的文档、信息甚至图表和多媒体总之那些内容都应该用 HTML代替。
大约在 2008 年以前微软 Office 产品中 Word 用 .doc 文件格式。这种二进制格式很难读 取而且能够读取 word 格式的软件很少。
为了跟上时代让自己的软件能够符合主流软件的标准微软决定使用 Open Office 的类 XML 格式标准此后新版 Word 文件才与其他文字处理软件兼容这个格式就是 .docx。
Python 对 这 种Open Office 和 Microsoft Office 都 在 使 用 的 .docx 格式 的 支 持 还 不 够 好。 虽 然 有 一 个 python-docx 库但是只支持创建新文档和读取一些基本的文件数据如文件大小和文件标题不支持正文读取。
想读取 Microsoft Office 文件的正文内容我们需要自己动手找方法。
二、从文件读取XML
from zipfile import ZipFile
from io import BytesIO
from bs4 import BeautifulSoup
wordFile open(/home/lijiang/Excel人员数据/码农必会词汇表.docx, rb).read()
wordFile BytesIO(wordFile)
document ZipFile(wordFile)
xml_content document.read(word/document.xml)
print(xml_content.decode(utf-8))
这段代码将Word文档读成二进制文件对象再用标准库zipfile解压再读取这个解压文件这样就成为XML格式了。运行的输出结果包含了大量信息但是被隐藏在XML格式里面。观察后会看到文档的正文内容都包含在w:t标签里面。这样就容易处理了。
三、用BeautifulSoup处理正文内容的XML标签
from zipfile import ZipFile
from io import BytesIO
from bs4 import BeautifulSoupwordFile open(/home/lijiang/Excel人员数据/码农必会词汇表.docx, rb).read()
wordFile BytesIO(wordFile)
document ZipFile(wordFile)
xml_content document.read(word/document.xml)wordObj BeautifulSoup(xml_content.decode(utf-8), featureslxml)
textStr wordObj.findAll(w:t)for textElem in textStr:
print(textElem.text)
为了以XML格式解析这个文档需要在BeautifulSoup构造方法中指定关键字参数featureslxml。word对象的findAll方法将带标签w:t的正文内容返回了一个列表。遍历此列表时引用列表元素textElem的text属性就去除了所有七七八八的标签只剩下纯粹的正文内容了。也可以看到word是如何对文字进行断行处理的。