解决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中urllib2模块的8个使用细节分享
Jan 01 Python
Python用list或dict字段模式读取文件的方法
Jan 10 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
简单了解python代码优化小技巧
Jul 08 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
Python %r和%s区别代码实例解析
Apr 03 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 15 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 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编写daemon process 实例详解
2016/11/13 PHP
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Python之Web框架Django项目搭建全过程
2017/05/02 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
英国办公用品商店:Office Outlet
2018/04/04 全球购物
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
自我鉴定标准格式
2014/03/19 职场文书
元旦寄语大全
2014/04/10 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
团队拓展活动方案
2014/08/28 职场文书
社区好人好事材料
2014/12/26 职场文书
北京颐和园导游词
2015/01/30 职场文书
老人节主持词
2015/07/04 职场文书
小学入学感言
2015/08/01 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python