解决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通过zlib实现压缩与解压字符串的方法
Nov 19 Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
Mar 27 Python
python实现复制整个目录的方法
May 12 Python
python中logging库的使用总结
Oct 18 Python
Python操作word常见方法示例【win32com与docx模块】
Jul 17 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
python中必要的名词解释
Nov 20 Python
python interpolate插值实例
Jul 06 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
Python保存并浏览用户的历史记录
Apr 29 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教程 插件机制在PHP中实现方案
2012/11/02 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
教你php如何实现验证码
2016/01/20 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
js实现小时钟效果
2020/03/25 Javascript
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
python读取Excel表格文件的方法
2019/09/02 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
如何获得EntityManager
2014/02/09 面试题
销售主管岗位职责范本
2014/02/14 职场文书
联谊会主持词
2014/03/26 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
鼓舞士气的口号
2014/06/16 职场文书
Python学习之包与模块详解
2022/03/19 Python