1. 抽取pdf内容
数据分析常见的需求是抽取pdf内容,很多常用的包pdfminer.six、pdfminer3k等用法比较繁琐且不清晰,终于让我找到一个简单粗暴的工具 - tika 。
######### 某些pdf名称可能无法在win下读取,需要修改文件名 #############
# 利用rename 批量修改文件名
for index, report in enumerate(report_path.glob('*')):
preix = str(report).split('.')[1]
name = report.with_name(str(index+1)+'.'+preix)
report.rename(name)
################################################################
# 代码块功能:抽取出目录下所有pdf的内容
from pathlib import Path
import tika
tika.initVM()
from tika import parser
report_path = Path(__file__).joinpath('../../newreport/report').resolve()
pdf_list = []
for i in report_path.glob('*.pdf'):
pdf_list.append(str(i)) # 得到所有pdf的路径,需要加str,不然是windowspath
pdf_content_list = []
for i in pdf_list:
raw = parser.from_file(i) # 替换多个字符
pdf_content_list.append(raw['content'].strip().replace('\n', '').replace(' ', ''))
2. 抽取docx内容
抽取docx内容相对成熟,使用docx工具包, 如果是doc文件则需要转换成docx格式。
# 1. 将doc文件转换成docx,需要安装office,如果只有wps的话,可能需要换成kwps.Application
from win32com import client as wc
word = wc.Dispatch("Word.Application") # 打开word应用程序
for file in files:
doc = word.Documents.Open(file) #打开word文件
doc.SaveAs("{}x".format(file), 12 )#另存为后缀为".docx"的文件,其中参数12指docx文件
doc.Close() #关闭原来word文件
word.Quit()
# 2读取docx文档
import docx
file = docx.Document(doc_)
title = file.paragraphs[0].text
content = ''
for para in file.paragraphs:
content += para.text.strip()
3. csv转成excel格式
针对没有装wps打开csv文件可能乱码,需要转换成excel格式,简单的八大鸟。
import pandas as pd
data = pd.read_csv(r'E:\***\report_trans.csv')
data.to_excel('E:\***\report_trans.xlsx',index=False)
4. 总结
- 数据分析时候善用find函数、pickle包
- 需要好好锻炼一下正则表达式能力
- 先google pypi readio(好像是这个名) 有没有相应的包和文档,实在受不了国内互相抄的文章了