版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/abc666666_6/article/details/85034943
参考文章
python读写doc/docx/txt/xls文件
python读取word文档表格里的数据
使用python找到指定路径下的全部txt(可以是jpg,doc等等)文件
获取txt中保存的url地址
import re
import urllib.request
# 读取本地html中url地址(提前改下后缀)
with open(r"C:/Users/mfml1073278014/Desktop/1.txt",'r') as f:
# print(type(f.read()))
l= re.findall(r"http://jyu.good-edu.cn/editor_files/\S*.doc", f.read()) # 正则,匹配里面的url
count = 0
for url in l:
count += 1
print(url)
urllib.request.urlretrieve(url, str(count)+"_info.doc")
print(count)
下载保存的url中的内容
import os
root = "E:/Django/DA/chapter01/docx"
# 递归遍历,找到需要的文件名,保存在ret中
def findfile(path, typ, ret):
filelist = os.listdir(path)
for filename in filelist:
de_path = os.path.join(path, filename)
if os.path.isfile(de_path):
if de_path.endswith(typ):
ret.append(de_path)
else:
findtxt(de_path, typ, ret)
ret = []
findfile(path=root, typ=".doc", ret=ret)
print(ret)
改变格式
from win32com import client as wc
# 转换 doc to docx
def toDocx(path):
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(path) # 目标路径下的doc文件
extension = os.path.splitext(path)[1] # 获得后缀
path = path.replace(extension, '.docx') #改后缀为docx
doc.SaveAs(path, 12, False, "", True, "", False, False, False, False) # 转化后路径下的文件
doc.Close()
word.Quit()
for p in ret:
print(p)
toDocx(p) # 转换为docx
os.remove(p) # 删除原有的doc文件
遍历docx文件,查找关键字
import docx
final = set()
def find_info(target):
# 获取文档对象
for word in ret:
file = docx.Document(word)
# 输出每一段的内容
for para in file.paragraphs:
# print(para.text)
eight_date = re.findall(target, para.text, re.IGNORECASE)
if eight_date:
final.add(word)
try:
tables = file.tables # 获取文件中的表格集
table = tables[0] # 获取文件中的第一个表格
for i in range(1, len(table.rows)): # 从表格第二行开始循环读取表格数据
result = table.cell(i, 0).text + "" + table.cell(i, 1).text + table.cell(i, 2).text + table.cell(i, 3).text
# cell(i,0)表示第(i+1)行第1列数据,以此类推
eight_date = re.findall(target, result, re.IGNORECASE)
if eight_date:
final.add(word)
except:
# print("IndexError: list index out of range")
pass
find_info("c\+\+")
for s in final:
print(s)