做文本数据处理,我最怕遇到pdf和docx,一旦遇到了,都是双手开启无影指模式狂按快捷键。按的手抽,按的崩溃。
今天我大师兄查哥搞定了pdf文件的读取,知道此事后异常欣喜。在此基础上,我查找了docx文件的读取实现方式,特发此文与众分享。
安装
代码是运行在python3,需要安装的包:
-
pdfminer3k
- python-docx
from io import StringIO
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
import re
import docx
def read_from_pdf(file_path):
"""
读取pdf文件,并返回pdf中的文本内容。
:param file_path: pdf文件路径
:return: 字符串
"""
with open(file_path, 'rb') as file:
resource_manager = PDFResourceManager()
return_str = StringIO()
lap_params = LAParams()
device = TextConverter(resource_manager, return_str, laparams=lap_params)
process_pdf(resource_manager, device, file)
device.close()
content = return_str.getvalue()
return_str.close()
return re.sub('\s+', ' ', content)
def read_from_docx(file_path):
"""
读取docx文件,并返回其中的文本内容
:param file_path: docx文件路径
:return: docx中的文本内容
"""
texts = ''
doc = docx.Document(file_path)
for para in doc.paragraphs:
texts += para.text
return texts
print(read_from_pdf('test.pdf'))
print(read_from_docx('test.docx'))
运行结果可见下图,这是我在自己电脑上成功读取pdf,从此手指再也不用抽筋了,开心!