解决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中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
Oct 23 Python
python函数装饰器用法实例详解
Jun 04 Python
python删除特定文件的方法
Jul 30 Python
Python在线运行代码助手
Jul 15 Python
python虚拟环境virtualenv的安装与使用
Sep 21 Python
全面分析Python的优点和缺点
Feb 07 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
python导入库的具体方法
Jun 18 Python
Python socket服务常用操作代码实例
Jun 22 Python
Tensorflow--取tensorf指定列的操作方式
Jun 30 Python
django序列化时使用外键的真实值操作
Jul 15 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
Feb 26 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 文件缓存的性能测试
2010/04/25 PHP
php实现插入排序
2015/03/29 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
Jquery Change与bind事件代码
2011/09/29 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
JScript实现地址选择功能
2017/08/15 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
nuxt.js 缓存实践
2018/06/25 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
python查看列的唯一值方法
2018/07/17 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
《巨人的花园》教学反思
2014/02/12 职场文书
医院标语大全
2014/06/23 职场文书
优秀党员申报材料
2014/12/18 职场文书
食品仓管员岗位职责
2015/04/01 职场文书
入党群众意见范文
2015/06/02 职场文书
详解MySQL集群搭建
2021/05/26 MySQL