Python 读取各类文件格式的文本信息 | doc,excel,html,mht

(点击上方快速关注并设置为星标,一起学Python)

引言

众所周知,python最强大的地方在于,python社区汇总拥有丰富的第三方库,开源的特性,使得有越来越多的技术开发者来完善。

python的完美性。

未来人工智能,大数据方向,区块链的识别和进阶都将以python为中心来展开。

咳咳咳! 好像有点打广告的嫌疑了。

当前互联网信息共享时代,最重要的是什么?是数据。最有价值的是什么?是数据。最能直观体现技术水平的是什么?还是数据。

所以,今天我们要分享的是:如何来获取各个文件格式的文本信息。

普通文件的格式 一般分为: txt普通文本信息,doc word文档,html网页内容,excel表格数据,以及特殊的mht文件。

一、Python处理html网页信息

html类型的文本数据,内容是由前端代码书写的标签+文本数据的格式,可以直接在chrome浏览器打开,清楚 的展示出文本的格式。

python 获取html文件的内容和获取txt文件的方法相同,直接打开文件读取就可以了。

读取代码如下:

with open(html_path, "r", encoding="utf-8") as f:
    file = f.read()

file 是html文件的文本内容。是一个网页标签的格式内容。

二、Python处理excel表格信息

python拥有直接操作excel表格的第三方库xlwt,xlrd。调用对应的方法就可以读写excel表格数据。

读取excel操作代码如下:

filepath = "C:\\Users\Administrator\Desktop\新建文件夹\笨笨 前程6份 武汉.xls"
sheet_name = "UserList"
rb = xlrd.open_workbook(filepath)

sheet = rb.sheet_by_name(sheet_name)

# clox_list = [0, 9, 14, 15, 17]
for row in range(1, sheet.nrows):
w = WriteToExcel()
# for clox in clox_list:
name = sheet.cell(row, 0).value
phone = sheet.cell(row, 15).value
address = sheet.cell(row, 9).value
major = sheet.cell(row, 14).value
age = sheet.cell(row, 8).value

其中row是表格数据对应的行数, cell获取具体行数,列数的具体数据。

三、Python读取doc文档数据

python读取doc文档是最麻烦的。处理逻辑复杂。处理的方式也有很多种。

python 没有直接处理doc文档的第三方库,但是有一个处理docx的第三方库。可以通过将doc文件转换为docx文件,再调用第三方python库pydocx来读取doc文档的内容。

这里需要注意的是,不要直接修改doc的后缀来修改成docx文件。直接通过修改后缀获取的docx文件,pydocx无法读取内容。

我们可以使用另外一个库来修改doc为docx。

具体代码如下:

def doSaveAas(self, doc_path):
"""
将doc文档转换为docx文档
:rtype: object
"""

docx_path = doc_path.replace("doc", "docx")
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(doc_path) # 目标路径下的文件
doc.SaveAs(docx_path, 12, False, "", True, "", False, False, False, False) # 转化后路径下的文件
doc.Close()
word.Quit()

代码所需的包接口:

import os
import zipfile
from win32com import client as wc
import xlrd
from bs4 import BeautifulSoup
from pydocx import PyDocX
from lxml import html
from xpath_content import XpathContent
from write_to_excel import WriteToExcel

python处理docx文档的方法有很多种,具体使用情况,根据个人需求来决定。

No.1 解压docx文件

docx文件的原理,本质上就是一个压缩的zip文件,通过解压以后,就可以获取原来文件的各个内容。

docx解压后的文件结构如下:

docx文件的文本内容存储结构如下:

文本内容存储于word/document.xml文件中。

第一种方法,我们就可以先将docx还原成zip压缩文件,再解压zip文件,读取word/document.xml文件的内容就ok了。

具体操作代码如下:

def get_content(self):
"""
获取docx文档的文本内容
:rtype: object
"""

os.chdir(r"C:\Users\Administrator\Desktop\新建文件夹") # 改变目录到文件的目录
#
os.rename("51 2014.09.12 1份Savannah.docx", "51 2014.09.12 1份Savannah.ZIP") # 重命名为zip文件
f = zipfile.ZipFile('51 2014.09.12 1份Savannah.ZIP', 'r') # 进行解压
xml = f.read("word/document.xml")

wordObj = BeautifulSoup(xml.decode("utf-8"))
# print(wordObj)
texts = wordObj.findAll("w:t")
content = []
for text in texts:
content.append(text.text)
content_str = "".join(content)
return content_str

最后获取到的就是docx文档的所有文本数据了。

No.2 将docx文档转换成python能够处理的文本格式

第一种方法,是依据docx文档的原理来获取数据,流程有点繁琐,有没有能直接读取docx文档内容的方法呢?答案,肯定是没有的,别想了,洗洗回家睡吧。

直接读取docx文档的方法没有,有没有能够将docx文档转换成python能够轻松处理的文本格式呢?

这个可以有,前面说了,python拥有大量丰富的第三方库(先夸一波我大python),历经千辛万苦终于找到了,一个能转换docx文档格式的第三方库,pydocx,pydocx库中有个方法pydocx.to_html()就可以直接将docx文档转换为html文件,怎么样?意不意外,惊喜不惊喜!

第二种方法,转换文本格式的代码如下:

def docx_to_html(self, docx_path):
"""
docx文档转换成html响应
:rtype: object
"""

# docx_path = "C:\\Users\Administrator\Desktop\新建文件夹\\51 2014.09.12 1份Savannah.docx"
response = PyDocX.to_html(docx_path)

获取到的response是html文件内容。

四、Python处理mht文件

mht文件是一种只能在IE浏览器上展示的文本格式,在chrome浏览器中打开是一堆的乱码。

No.1 伪造IE请求mht文件内容

最基础的读取mht文本的方法就是伪造IE浏览器请求。

调用requests库,发送get请求网页链接,构造IE的请求头信息。

理论上来说,这种方法是可行的。但是呢,不建议用,原因大家都懂得。

No.2 转换文件格式

好了说正经的方法,猜测mht文件能否修改成其他文件格式来直接读取呢?

docx,不行;html,不行;excel,更不用说了。

真相只有一个!!!

直接修改后缀得到的docx,无法读取。

so,我们想到的方法是什么呢。没错,就是修改成doc文档。

方法是匪夷所思的,但也是灵感一现。

mht可以直接通过修改后缀转换成doc文档,doc文档读取文本内容的方法具体参考上面读取doc文档的方法。

如何获取html文本的内容?

html文本的内容是网页结构标签数据,取出文本的方式是:re正则,或者xpath。

后续,小伙伴有需要的话,会再开一章详细了解re,xapth的使用规则。

如果有问题的话,也可以随时留言,感谢观看!!

(完)

使用Python批量采集1inux+系统时间,1oad,内存使用率,磁盘使用率

使用python,在linux上监控远程windows的CPU、硬盘、内存使用率?你需要安装wmic,它实现了linux下能使用wmi,安装以后就可以用了,下面是例子。 import wmi_client_wrapper as wmi wmic = wmi.WmiClientWrapper( username="Administrator", password="password", host="192.168.1.149", ) output = wmic.query("SELECT * FROM Win32_Processor")python,由于执行脚本要写日志,我需要获取Linux服务器的磁盘利用率等,how?

importos
defgetLinuxDiskInfo(path):
ifos.path.exists(path):
vfs=os.statvfs(path)
available=vfs[statvfs.F_BAVAIL]*vfs[statvfs.F_BSIZE]/1024
capacity=vfs[statvfs.F_BLOCKS]*vfs[statvfs.F_BSIZE]/1024
used=capacity-available

returnavailable,used,capacity

returnNone,None,None

请教如何在Python中获取Linux当前系统时间1234In [1]: from datetime import datetime In [2]: datetime.now()Out[2]: datetime.datetime(2015, 1, 31, 12, 19, 46, 862178)如果解决了您的问题请采纳! 如果未解决请继续追问!怎么用python查询出 进程 CPU使用率 内存使用 句柄数

看到句柄数这几个字,我猜可能是要windows下运行的?

可能答非所问,不过在linux下最好的用的莫过于psutil了,你可以通过进程名或pid很好的监控任意进程的系统占用情况,甚至进程建立的每个连接都能获取到

>>>importpsutil
>>>psutil.pids()
[1,2,3,4,5,6,7,46,48,50,51,178,182,222,223,224,
268,1215,1216,1220,1221,1243,1244,1301,1601,2237,2355,
2637,2774,3932,4176,4177,4185,4187,4189,4225,4243,4245,
4263,4282,4306,4311,4312,4313,4314,4337,4339,4357,4358,
4363,4383,4395,4408,4433,4443,4445,4446,5167,5234,5235,
5252,5318,5424,5644,6987,7054,7055,7071]
>>>
>>>p=psutil.Process(7055)
>>>p.name()
'python'
>>>p.exe()
'/usr/bin/python'
>>>p.cwd()
'/home/giampaolo'
>>>p.cmdline()
['/usr/bin/python','main.py']
>>>
>>>p.status()
'running'
>>>p.cpu_percent(interval=1.0)
12.1
>>>psutil.net_io_counters(pernic=True)
{'eth0':netio(bytes_sent=485291293,bytes_recv=6004858642,packets_sent=3251564,packets_recv=4787798,errin=0,errout=0,dropin=0,dropout=0),
'lo':netio(bytes_sent=2838627,bytes_recv=2838627,packets_sent=30567,packets_recv=30567,errin=0,errout=0,dropin=0,dropout=0)}

从官方文档上copy了一部分出来,有没有碉堡了的感觉,快去翻一下文档吧,非常容易使用

python怎样获得当前系统的CPU频率和内存使用情况如果想自己写程序来实现的话,可以参考它们的源码。 top/free都是在procps包中(apt-get source procps)。 找到cpus_refresh()函数,你可以看到它是怎样从/proc/stat解析出CPU的使用率的。meminfo()函数则展示了如何从/proc/meminfo解析出内存的使用率(这个文件自己解析也很简单)。

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://news.xiuzhanwang.com/post/1229.html

发表评论

评论列表

还没有评论,快来说点什么吧~

友情链接: