解决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使用装饰器和线程限制函数执行时间的方法
Apr 18 Python
浅谈Python单向链表的实现
Dec 24 Python
解决python 输出是省略号的问题
Apr 19 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
Python使用random.shuffle()打乱列表顺序的方法
Nov 08 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
Numpy 多维数据数组的实现
Jun 18 Python
详解python with 上下文管理器
Sep 02 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 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/03/03 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
php获取flash尺寸详细数据的方法
2016/11/12 PHP
js 动态选中下拉框
2009/11/26 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers