解决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循环语句之break与continue的用法
Oct 14 Python
详解python 发送邮件实例代码
Dec 22 Python
使用python实现生成用户信息
Mar 20 Python
python的变量与赋值详细分析
Nov 08 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
Python Learning 列表的更多操作及示例代码
Aug 22 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
利用pyshp包给shapefile文件添加字段的实例
Dec 06 Python
python高级特性简介
Aug 13 Python
Python绘制组合图的示例
Sep 18 Python
python如何快速拼接字符串
Oct 28 Python
Python可以用来做什么
Nov 23 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP+javascript模拟Matrix画面
2006/10/09 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
php代码书写习惯优化小结
2013/06/20 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
jquery禁用右键示例
2014/04/28 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
python实现类的静态变量用法实例
2015/05/08 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
什么叫做SQL注入,如何防止
2016/10/04 面试题
应届毕业生自我评价分享
2013/12/15 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
工作表扬信范文
2015/01/17 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js