解决pyPdf和pyPdf2在合并pdf时出现异常的问题


Posted in Python onApril 03, 2020

当一个pdf文件有多page的时候,它将出来见你!

方法是取直接修改那个文件generic.py

(1) pyPdf

路径大约在这里:

/usr/lib/python2.7/site-packages/pyPdf/generic.py

if data.has_key(key):
  # multiple definitions of key not permitted
  raise utils.PdfReadError, "multiple definitions in dictionary"
data[key] = value

大约在532--536行

将它修改为:

if not data.get(key):
 
 data[key] = value

(2)pyPdf2

路径大约在:

/usr/lib/python2.7/site-packages/PyPDF2/generic.py

if not data.get(key):
  data[key] = value
elif pdf.strict:
  # multiple definitions of key not permitted
  raise utils.PdfReadError("Multiple definitions in dictionary at byte %s for key %s" \
           % (utils.hexStr(stream.tell()), key))

修改为:

if not data.get(key):
  data[key] = value

补充知识:在Python里如何切分中文文本句子(分句)、英文文本分句(切分句子)

在处理文本时,会遇到需要将文本以 句子 为单位进行切分(分句)的场景,而文本又可以分为 中文文本 和 英文文本 ,处理的方法会略有不同。本文会介绍 Python 是如何处理 分句 的。

分句的关键是找到合适的结束符号,比如:中文里的 。,英文里的 . 等,而且,在这一点上中英也是有很大区分的。

这里介绍一种纯用 Python 实现的分句函数。

def cut_sentences(content):
	# 结束符号,包含中文和英文的
	end_flag = ['?', '!', '.', '?', '!', '。', '…']
	
	content_len = len(content)
	sentences = []
	tmp_char = ''
	for idx, char in enumerate(content):
		# 拼接字符
		tmp_char += char

		# 判断是否已经到了最后一位
		if (idx + 1) == content_len:
			sentences.append(tmp_char)
			break
			
		# 判断此字符是否为结束符号
		if char in end_flag:
			# 再判断下一个字符是否为结束符号,如果不是结束符号,则切分句子
			next_idx = idx + 1
			if not content[next_idx] in end_flag:
				sentences.append(tmp_char)
				tmp_char = ''
				
	return sentences

content = '在处理文本时,会遇到需要将文本以 句子 为单位进行切分(分句)的场景,而文本又可以分为 中文文本 和 英文文本 ,处理的方法会略有不同。本文会介绍 Python 是如何处理 分句 的。'
sentences = cut_sentences(content)
print('\n\n'.join(sentences))

在处理文本时,会遇到需要将文本以 句子 为单位进行切分(分句)的场景,而文本又可以分为 中文文本 和 英文文本 ,处理的方法会略有不同。

本文会介绍 Python 是如何处理 分句 的。

这个函数可以通过修改 end_flag (结束符号),来自定义特定的句子切分方式,比如加入 ; 等符号。

当然,也可以用正则表达式来完成分句,使用 re.split 的方法。

import re

def cut_sentences(content):
	sentences = re.split(r'(\.|\!|\?|。|!|?|\.{6})', content)
	return sentences

content = content = '在处理文本时,会遇到需要将文本以 句子 为单位进行切分(分句)的场景,而文本又可以分为 中文文本 和 英文文本 ,处理的方法会略有不同。本文会介绍 Python 是如何处理 分句 的。'
sentences = cut_sentences(content)
print('\n\n'.join(sentences))

在处理文本时,会遇到需要将文本以 句子 为单位进行切分(分句)的场景,而文本又可以分为 中文文本 和 英文文本 ,处理的方法会略有不同

。

本文会介绍 Python 是如何处理 分句 的

。

这里还可以安利大家一个非常不错的处理中文标点符号的第三库: zhon,可以通过 pip install zhon 安装,功能也算非常丰富。

我们使用 zhon 来实现中文分句。

import re
import zhon

rst = re.findall(zhon.hanzi.sentence, '我买了一辆车。妈妈做的菜,很好吃!')
print(rst)

['我买了一辆车。', '妈妈做的菜,很好吃!']

大家可以阅读 zhon 的官方文档,了解更多的使用案例。

以上这篇解决pyPdf和pyPdf2在合并pdf时出现异常的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python读文件逐行处理的示例代码分享
Dec 27 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
详谈python read readline readlines的区别
Sep 22 Python
python实现K最近邻算法
Jan 29 Python
python实现数据库跨服务器迁移
Apr 12 Python
学生信息管理系统python版
Oct 17 Python
python调用c++传递数组的实例
Feb 13 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
最小二乘法及其python实现详解
Feb 24 Python
在python里创建一个任务(Task)实例
Apr 25 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
Python实现画图软件功能方法详解
Jul 28 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 #Python
Numpy 理解ndarray对象的示例代码
Apr 03 #Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 #Python
Django自定义列表 models字段显示方式
Apr 03 #Python
使用Django清空数据库并重新生成
Apr 03 #Python
Python基础类继承重写实现原理解析
Apr 03 #Python
Django实现列表页商品数据返回教程
Apr 03 #Python
You might like
关于php mvc开发模式的感想
2011/06/28 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
深入理解PHP中的global
2014/08/19 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
JS动画效果代码3
2008/04/03 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
jQuery 定时局部刷新(setInterval)
2010/11/19 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Django 大文件下载实现过程解析
2019/08/01 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Jupyter加载文件的实现方法
2020/04/14 Python
常用的HTML5列表标签
2017/06/20 HTML / CSS
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
房地产还款计划书
2014/01/10 职场文书
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技