解决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 相关文章推荐
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
python下载微信公众号相关文章
Feb 26 Python
python实现QQ空间自动点赞功能
Apr 09 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
Python3 翻转二叉树的实现
Sep 30 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
python 实现线程之间的通信示例
Feb 14 Python
pytorch数据预处理错误的解决
Feb 20 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
Python实现归一化算法详情
Mar 18 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
python重试装饰器示例
2014/02/11 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
python中altair可视化库实例用法
2021/01/26 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
计算机应用专业推荐信
2013/11/13 职场文书
公司清洁工岗位职责
2013/12/14 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
房屋出租委托书格式
2014/09/23 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
大学生个人学年总结
2015/02/15 职场文书
先进个人自荐书
2015/03/06 职场文书
实施意见格式范本
2015/06/05 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL