python对不同类型文件(doc,txt,pdf)的字符查找
python对不同类型文件的字符查找
TXT文件:
def txt_handler(self, f_name, find_str):
"""
处理txt文件
:param file_name:
:return:
"""
line_count = 1;
file_str_dict = {}
if os.path.exists(f_name):
f = open(f_name, 'r', encoding='utf-8')
for line in f :
if find_str in line:
file_str_dict['file_name'] = f_name
file_str_dict['line_count'] = line_count
break
else:
line_count += 1
return file_str_dict
docx文件
需要用到docx包
pip install python-docx
参考https://python-docx.readthedocs.io/en/latest/
from docx import Document def docx_handler(self, f_name, find_str):
"""
处理word docx文件
:param file_name:
:return:
"""
# line_count = 1;
file_str_dict = {}
if os.path.exists(f_name):
document = Document(f_name) # 打开文件x.docx
for paragraph in document.paragraphs: # 每个获取段落
# print(paragraph.text)
if find_str in paragraph.text:
file_str_dict['file_name'] = f_name
# file_str_dict['line_count'] = line_count
break return file_str_dict
doc文件:
python没有专门处理doc文件的包,需要把doc转换成docx,再用docx文件类型方式进行处理
from win32com import client as wc def doc_to_docx(self, fileName):
# 将doc转换成docx
word = wc.Dispatch("Word.Application")
doc = word.Documents.Open(fileName)
# 使用参数16表示将doc转换成docx,保存成docx后才能 读文件
FileNameDocx = fileName[:-4] + '.docx'
doc.SaveAs(FileNameDocx, 16)
doc.Close()
word.Quit()
return FileNameDocx
pdf文件:
这里使用PDFMiner包
python3安装
python -m pip install pdfminer.six
参考文章
https://dzone.com/articles/exporting-data-from-pdfs-with-python
import io
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage def pdf_handler(self, f_name, find_str):
"""
处理pdf文件
:param file_name:
:return:
"""
# line_count = 1;
file_str_dict = {}
if os.path.exists(f_name):
# pdf = pdfplumber.open(f_name) # 打开文件x.pdf
for page in self.extract_text_by_page(f_name):
# 获取当前页面的全部文本信息,包括表格中的文字
if find_str in page:
file_str_dict['file_name'] = f_name
# file_str_dict['line_count'] = line_count
break
return file_str_dict @staticmethod
def extract_text_by_page(pdf_path):
"""
按页读取PDF
生成器函数按页生成(yield)了文本
:param pdf_path:
:return:
"""
with open(pdf_path, 'rb') as fh:
for page in PDFPage.get_pages(fh,
caching=True,
check_extractable=True):
resource_manager = PDFResourceManager()
fake_file_handle = io.StringIO()
converter = TextConverter(resource_manager, fake_file_handle)
page_interpreter = PDFPageInterpreter(resource_manager, converter)
page_interpreter.process_page(page)
text = fake_file_handle.getvalue()
yield text # 使用生成器
# close open handles
converter.close()
fake_file_handle.close()
python对不同类型文件(doc,txt,pdf)的字符查找的更多相关文章
- doc或docx(word)或image类型文件批量转PDF脚本
doc或docx(word)或image类型文件批量转PDF脚本 1.实际生产环境中遇到文件展示只能适配PDF版本的文件,奈何一万个文件有七千个都是word或者image类型的,由此搞个脚本批量转换下 ...
- python反编译chm文件并生成pdf文件
# -*- coding: utf-8 -*- import os import os.path import logging import pdfkit original_chm = r'C:\Us ...
- python基础——python解析yaml类型文件
一.yaml介绍 yaml全称Yet Another Markup Language(另一种标记语言).采用yaml作为配置文件,文件看起来直观.简洁.方便理解.yaml文件可以解析字典.列表和一些基 ...
- 【python】实例-创建文件并通过键盘输入字符
import os lnend=os.linesep ##windows行结束符号是“\r\n” FileName=raw_input("please input filename:&quo ...
- python数据处理(三)之处理pdf文件
代码以及资料 https://github.com/jackiekazil/data-wrangling 1.前言 尽可能地寻找可以替代pdf格式的数据 2.解析pdf的编程方法 安装slate pi ...
- python基础——元组、文件及其它
Python核心数据类型--元组 元组对象(tuple)是序列,它具有不可改变性,和字符串类似.从语法上讲,它们便在圆括号中,它们支持任意类型.任意嵌套及常见的序列操作. 任意对象的有序集合:与字符串 ...
- solr6.6 导入 pdf/doc/txt/json/csv/xml文件
文本主要介绍通过solr界面dataimport工具导入文件,包括pdf.doc.txt .json.csv.xml等文件,看索引结果有什么不同.其实关键是managed-schema.solrcon ...
- python第六篇文件处理类型
阅读目录 一 文件操作 二 打开文件的模式 三 操作文件的方法 四 文件内光标移动 五 文件的修改 文件处理 ...
- [大数据]-Fscrawler导入文件(txt,html,pdf,worf...)到Elasticsearch5.3.1并配置同义词过滤
fscrawler是ES的一个文件导入插件,只需要简单的配置就可以实现将本地文件系统的文件导入到ES中进行检索,同时支持丰富的文件格式(txt.pdf,html,word...)等等.下面详细介绍下f ...
随机推荐
- 关于Tfrecord
写入Tfrecord print("convert data into tfrecord:train\n") out_file_train = "/home/huadon ...
- 【转】JAVA接口自动化测试之一个测试方法对应多条测试数据的实现方式
一.痛点:一条测试数据对应一个测试方法 前面的章节中我们已经写代码实现了登录接口的处理调用,但是一个接口往往是需要多条测试用例才能完整的覆盖到每一种情况. 针对于单接口多条测试用例需要执行的情况,该如 ...
- httprunner学习9-完整的用例结构(yaml&json)
前言 前面几篇零散的学了一些httprunner的知识点,那么一个完整的 YAML/JSON 用例文件包含哪些关键字呢? 测试用例结构 在 HttpRunner 中,测试用例组织主要基于三个概念: 测 ...
- 那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告
作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:Beta阶段团队项目互评 团队名称: 那周余嘉熊掌将得队 作业目标:项目互测互评 队员学号 队员姓名 博客地址 备注 221600131 ...
- 20180606模拟赛T1——猫鼠游戏
题目描述: 猫和老鼠在10*10的方格中运动,例如: *...*..... ......*... ...*...*.. .......... ...*.C.... *.....*... ...*... ...
- 阿里云部署,ubuntu, 连接服务器 |更新源| 安装node |安装mysql
1.连接服务器 xshell 新建连接 ssh root@1.1.1.1 2.更新源 apt-get update 3.安装node apt-get install -y curl curl -sL ...
- vue 命名路由
有时候,通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候.你可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称. const ro ...
- 牛客练习赛55 E 树
题目链接: 题意:给出n个点,n-1条边求任意两个点的距离平方的和 解法: f[i]表示这个点的高度 sz[i]表示这个子树的大小 szz[i]表示这个这个子树大小的平方 sum[i]表示这个子树所有 ...
- CVE-2017-7494复现 Samba远程代码执行
Samba是在Linux和Unix系统上实现Smb协议的一个免费软件,由服务器及客户端程序构成,Samba服务对应的TCP端口有139.445等.Smb一般作为文件共享服务器,专门提供Linux与Wi ...
- Android根据加速度和地磁场传感器实现自动对焦
在相机预览开始后新建AutoFocusManage对象即可,传入context和camera. 注意,在停止预览或者关闭相机时需调用方法中unregisterListener方法. 目前实现是当前方向 ...