解决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中的Django框架中进行字符串翻译
Jul 27 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
Python定时器实例代码
Nov 01 Python
python之DataFrame实现excel合并单元格
Feb 22 Python
python调用百度语音识别api
Aug 30 Python
Python图像处理之简单画板实现方法示例
Aug 30 Python
python实现图片压缩代码实例
Aug 12 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
教你使用TensorFlow2识别验证码
Jun 11 Python
python之基数排序的实现
Jul 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实现接收二进制流转换成图片的方法
2017/01/10 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
ansible作为python模块库使用的方法实例
2017/01/17 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
python的concat等多种用法详解
2018/11/28 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
django修改models重建数据库的操作
2020/03/31 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
美国钻石商店:Zales
2016/11/20 全球购物
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
骨干教师事迹材料
2014/12/17 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
2016年国庆节新闻稿范文
2015/11/25 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
MySQL为id选择合适的数据类型
2021/06/07 MySQL
MySQL Server 层四个日志
2022/03/31 MySQL