数据分析学习笔记—文件处理与pdf处理

一、文件处理与pdf处理思维导图

在这里插入图片描述

二、补充说明:pdf的读取、合并、转换、水印添加(自学,如有错误烦请指正)

1、pdf的读取

1. 对pdf文本内容的读取

主要使用的是pdfplumber库

  • 库的安装:(以 anaconda为例)
    在这里插入图片描述
    在这里插入图片描述
    如果出现error,建议根据出错的类型百度,我出错的原因是pip太旧了啥啥的,更新就好了
    安装完成后,请看代码及注释
import pdfplumber  #导入库
with  pdfplumber.open("D:/ps/test.pdf") as pdf :  
   pdf_len = len(pdf.pages)  #获取pdf所有页数
   print(pdf_len)   #输出pdf所有页数
   first_page = pdf.pages[0]  #获取pdf页面信息列表的第一页的内容
   print(first_page)  #输出
   print(first_page.chars[0])   #输出第一页的独立的字符的属性
   first_page.extract_text()  #获取当前页面文本值
   for i in range(0,pdf_len):  # 遍历所有页面,获取文本值并输出
        print(pdf.pages[i].extract_text())
2、读取pdf表格内容转化为EXCEL

部分代码:

import pdfplumber  #导入库
import pandas as pd   #导入库
import os    #导入库

old_dir_path = 'D:/tools/python/study/datafile/txtpdf/oldfiles'   #路径
old_pdf_path = os.path.join(old_dir_path,'first.pdf')   #旧处理文件的地址

pdf = pdfplumber.open(old_pdf_path)     #打开旧的需要进行处理的文件,命名为pdf

pdf_pages = len(pdf.pages) #获取pdf的页数
pdf_pages

#获取第一页的表格,若没有表格,会返回错误
pdf.pages[1].extract_table()

all_content = []  #创建一个列表,获取pdf的所有表格

for i in range(0,pdf_pages):    #0到最后一页循环
    for j in pdf.pages[i].extract_tables():   #返回[[每一行内容]]的嵌套格式的内容,没有表格,返回空字符串的列表
        for k in j:   #对每一行内容进行遍历
            if ' ' not in k:  #判断是否有空字符串
                all_content.append(k)   #在建立原列表的基础上添加内容
                print(k) #输出

data = pd.DataFrame(all_content)  #转成DataFrame(),二维的有行有列的表
print(data) 
data.to_excel('pdf_tables.xlsx',index = False, header = None)   #生成xlsx文件,即excel里面的表格

2、pdf的合并

代码(非完全自创代码段):

from PyPDF2 import PdfFileReader  #导入库
from PyPDF2 import PdfFileWriter
import os    

old_dir_path = 'D:/tools/python/study/datafile/txtpdf/oldfiles'   #写入路径

pdf_paths = []  #定义一个列表保存所有pdf路径

for file_name  in os.listdir(old_dir_path):  #使用os模块,获得该路径下所有文件
    if '.pdf' in file_name:  #判断是否是pdf文件,是的话则加入列表
        pdf_paths.append(os.path.join(old_dir_path,file_name))  #  增加了路径
new_pdf = PdfFileWriter()  # 类 支持将pdf文件写出,给定由另一类产生的页面(通常为 PdfFileReader)
#记录 pdf总页数
numPages = 0
for pdfpath in pdf_paths:   #循环获取路径
    old_pdf = PdfFileReader(open(pdfpath,'rb'))       #初始化
    pdfPages = old_pdf.getNumPages()#获取当前pdf页数
    numPages += pdfPages    #增加pdf页数
    for i in range(old_pdf.getNumPages()) :   #增加所有页面合并后的内容
        new_pdf.addPage(old_pdf.getPage(i))    
with open(os.path.join(new_pdf_path,new_name),'wb') as p:    
    new_pdf.write(p)  #写入pdf

3、word转pdf(没仔细看)

4、pdf添加水印

pdf添加水印,其实我认为就是pdf和水印的pdf进行合并而产生的效果,所以代码也是从这个思路走的
代码段+注释:

from PyPDF2 import PdfFileReader,PdfFileWriter   #导入库
pdf = PdfFileReader('D:/tools/python/study/datafile/txtpdf/oldfiles/first.pdf')
water_pdf = PdfFileReader('D:/tools/python/study/datafile/txtpdf/water.pdf')

water = water_pdf.getPage(0)
writer = PdfFileWriter()

for i in range(pdf.getNumPages()):
    pdf.getPage(i).mergePage(water)
    writer.addPage(pdf.getPage(i))

writer.write(open('newnew.pdf','rwb'))

python还可以对pdf进行很多操作,这里只是列举了常见得几种,对于有密码得pdf,我选择手动解个密(狗头),文件批量处理就当我没说,作为初学者,还有很多地方不是太懂,希望后续可以更新改进。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深耕玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值