需求:将pdf中的单词,通过正则表达式提取,保存到excel将excel文件另存为.csv格式,导入到anki制成卡牌学习。

注:因为本人是业余,水平有限,如果讲解有错误,欢迎指正。另外,本文使用的926词汇pdf资料请自行准备。

目录

全部代码

代码效果

提前准备

pdf文件与内容导入

pdf文件导入

pdf内容导入

正则匹配|内容筛选

将结果存入Excel


全部代码

import pdfplumber
import re
import openpyxlad=[]
k=[]
for l in range(1,19):adress=f"D:/BaiduNetdiskDownload/李达926逐词精讲-词汇{l}笔记.pdf"ad.append(adress)pdf = pdfplumber.open(adress)print(f'正在写入{adress}')for i in range(len(pdf.pages)):page = pdf.pages[i]wk = page.extract_text()k.append(wk)
wb = ''.join(k)
wb = wb.replace('改变就橙啦橙啦,大学生学习成长平台'," ")
num = re.findall('(\d+).*?\[', wb)
text = re.findall('\d+(.*?)\[', wb)
chinese = re.findall('](.*?)【真题例句',wb,re.S)   #re.S的作用是使匹配包含换行符\n、\t,即空格与换行xs = openpyxl.Workbook()
xl = xs.active
xl.title = '达叔926'
xl['A1']='序号'
xl['B1']='英文'
xl['C1']='中文|助记'
q=2
for a,b,c in zip(num,text,chinese):xl.cell(q,1,a)xl.cell(q,2,b)xl.cell(q,3,c)q+=1
xs.save('达叔926.xlsx')

代码效果

处理的pdf内容:

 处理结果:


提前准备

import pdfplumber  #处理pdf的包
import re          #正则表达式处理包
import openpyxl    #操作excel的包

使用的软件(IDE)是Pycharm

系统为Windows11

pdfplumber的安装:pip install pdfplumber

pdf文件与内容导入

pdf文件导入

ad=[]
for l in range(1,19):adress=f"D:/BaiduNetdiskDownload/李达926逐词精讲-词汇{l}笔记.pdf"ad.append(adress)

代码中,我使用的了绝对路径。因为pdf共有18个,所以我需要for循环遍历,将文件的绝对地址通过append函数压入一个列表

pdf内容导入

k = []
pdf = pdfplumber.open(adress)         #将导入的pdf打开for i in range(len(pdf.pages)):   #获取pdf总页数,并遍历page = pdf.pages[i]            #打开pdf对应页数wk = page.extract_text()       #获取对应页数的文本内容k.append(wk)                   #将内容压入列表
wb = ''.join(k)                       #将列表的内容遍历拼接并转为字符串类型

将pdf的全部内容压入一个列表后,通过.join函数将列表遍历拼接转为字符串类型,为接下来正则匹配做准备。

另外如果pdf中的内容有图片或表格,那你就不能单纯的使用page.extract_text()。例如,处理pdf表格,需要使用page.extract_table()。其他具体用法请参考其它更专业的博客文章。

正则匹配|内容筛选

wb = wb.replace('改变就橙啦橙啦,大学生学习成长平台'," ") #将其他无关内容替换成空格
num = re.findall('(\d+).*?\[', wb)                     #匹配单词前的序号
text = re.findall('\d+(.*?)\[', wb)                    #匹配英文单词
chinese = re.findall('](.*?)【真题例句',wb,re.S)        #匹配中文释译和助记方法

re.S是正则的一种匹配模式,作用是防止匹配的内容中第一个就是换行符(空格、换行)而导致返回空列表。(注:正则表达式中的“.”能匹配任意字符,但换行符除外。当时没少因为这个知识点吃苦头)

改:(\d+).*?\[中的+是防止匹配到空格。*匹配目标出现0次或多次;+匹配目标出现1次或多次。

将结果存入Excel

xs = openpyxl.Workbook()
xl = xs.active
xl.title = '达叔926'
xl['A1']='序号'        #第一行、第一列单元格写入序号,以下作用类似
xl['B1']='英文'
xl['C1']='中文|助记'
q=2
for a,b,c in zip(num,text,chinese):xl.cell(q,1,a)    #通过openpyxl包的cell函数将内容写入对应的单元格;.cell(行,列,内容)xl.cell(q,2,b)xl.cell(q,3,c)q+=1
xs.save('达叔926.xlsx')

这里使用的是openpyxl,具体的使用方法请参考相应的文档。

        zip函数能同时遍历三个及以上的列表,并一一对应的形成新列表。注:请保证列表的长度一致,不然会发生一些意外。

        另,生成的xlsx会保存在你的代码根目录下,如果要保存到其他地方,可以使用with方法。


总结

其实,代码写到这里主体的功能基本实现了,但是还有很大优化空间。例如,将单词词性匹配出来,可这对我来说有一定难度,因为pdf里有很多一词多意和一个单词既能是名词又能是动词的情况。又例如将中文释义和助记方法分别匹配,等等。最后只要将excel文件另存为csv格式后导入anki(bilibili上有人讲解过)即可,那么请看看我的最终成品吧。(虽然细节处理的不好)

2022-11-15 22-03-27_x264

达叔926词汇pdf单词提取、保存相关推荐

  1. linux中将文本中的单词换掉的指令_为什么说从PDF中提取文本是一件困难的事?...

    PDF文档处理工作中,总是绕不开对文本提取的需求.很多用户觉得我们PDFlux好用,所以对其中的底层技术也非常感兴趣.也有人为认为,从PDF里抽取文本段落和表格,应该非常简单! 近期,我们会对PDF文 ...

  2. 达叔系列——神经网络编程基础

    以下内容为听了达叔课程的笔记与疑惑之处,暂且都记下.如有不妥之处,尽情指出. (1)二分类问题 目标:习得一个分类器,它以图片的特征向量作为输入,然后预测出结果 y 为 1 还是 0 .比如,我们需要 ...

  3. python 神经网络编程 视频_python基础教程之达叔系列——神经网络编程基础|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ (1)二分类问题 目标:习得一个分类器,它以图片的特征向量作为输入,然后预测出结果 y 为 1 还是 0 ...

  4. Camelot:从pdf中提取表格数据

    Camelot:从pdf中提取表格数据 文章目录: 一.Camelot的介绍和安装 1. Camelot介绍 2. Camelot的安装 3. 其他 二.Camelot的使用 1. 快速入门使用 2. ...

  5. python处理pdf提取指定数据_python从PDF中提取数据的示例

    01 前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都 ...

  6. python从字符串中提取数字并转换为相应数据类型_python从PDF中提取数据的示例

    01 前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都 ...

  7. python 保存pdf文件_PyPDF2读取PDF文件内容保存到本地TXT实例

    我就废话不多说了,大家还是直接看代码吧! from PyPDF2.pdf import PdfFileReader import pandas as pd def Pdf_to_txt(pdf): f ...

  8. PDF编辑方法,怎么从PDF中提取页面

    随着大家在工作中使用到PDF文件的情况越来越多,怎么编辑PDF文件也是大家常常谈论的话题,PDF文件的编辑是需要用到PDF编辑器的,那么,在编辑文件的时候,怎么提取PDF文件的页面呢,不会的小伙伴可以 ...

  9. python打印pdf特定页面_使用Python自由切分pdf文件提取任意页面

    这个小知识来自公众号[python小屋] 问题描述: 给定一个PDF文件,对其进行任意切分,提取其中任意页面,保存为新的PDF文件. 准备工作: 安装扩展库PyPDF2,参考命令 pip instal ...

  10. pdf怎么提取页面,pdf页面提取方法

    pdf怎么提取页面?我们每天都要接触很多的pdf文件,所以大家应该pdf文件比较的熟悉,pdf是一种由很多个页面组成的文件,有时候我们只想要pdf文件里面的某几个页面,该怎么办呢?大家都知道pdf是比 ...

最新文章

  1. kuangbin带你飞专题合集
  2. v380云存储怎么用_云智中国-百度智能云薄磊:海量无限存储,助力产业智能化升级...
  3. oracle 快速上手,Oracle学习笔记:快速上手
  4. Go面试题 | []int 能转换为 []interface 吗?
  5. cordova 调用java_Cordova调用原生方法的插件的编写
  6. pythoncmdb_django 实战二:Django2.2之CMDB资产管理系统 - 刘江的django教程
  7. FFmpeg学习(10)—— ffmpeg最全的命令参数
  8. 键盘按键用硅胶材料更好
  9. 时代杂志评选了08年50个最棒的网站
  10. 二阶系统响应指标图_自动控制理论_3.3 二阶系统的瞬态响应
  11. python爬虫下载恩智浦智能车竞赛技术报告
  12. DOS批处理文件加密文件夹
  13. wps文档怎么做链接
  14. 谷歌学术403:某URL没有权限访问
  15. 后缀是lnk是什么文件_后缀为.lnk的文件怎么打开?
  16. 设置LINUX启动时的液晶屏参数
  17. children()和children以及childrenNode的区别
  18. ubuntu20.04下安装微信和qq
  19. Sailfish应用开发入门(二)Sailfish SDK 简介
  20. 都在说测试左移和右移,只有这篇文章说明白了

热门文章

  1. Markdown开发VSCode插件推荐
  2. 网站开发进阶(二十四)HTML颜色代码表
  3. [转]30个总结JVM虚拟机的技术文排版好(收藏版)
  4. 方正飞鸿:OA系统先进性如何在工作流中体现
  5. [4G5G基础学习]:L3 RRC层概述与总体架构、ASN.1消息、无线承载SRB, DRB、终端三种状态、MIB, SIB,NAS消息类型
  6. Java开发设计——七大原则
  7. 高等数学学习笔记——第六十一讲——空间曲线的弧长与曲率
  8. brctl配置linux bridge及虚拟bridge实现
  9. php 邮箱反垃圾机制,企业邮箱中的反垃圾邮件规则
  10. <学习笔记>从零开始自学Python-之-web应用框架Django( 八)Django表单