解决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 相关文章推荐
详解如何用OpenCV + Python 实现人脸识别
Oct 20 Python
对numpy中轴与维度的理解
Apr 18 Python
softmax及python实现过程解析
Sep 30 Python
python SVD压缩图像的实现代码
Nov 05 Python
解决Tensorflow占用GPU显存问题
Feb 03 Python
基于python3生成标签云代码解析
Feb 18 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
Python调用接口合并Excel表代码实例
Mar 31 Python
Python csv文件记录流程代码解析
Jul 16 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 Python
python微信智能AI机器人实现多种支付方式
Apr 12 Python
Python可视化神器pyecharts之绘制箱形图
Jul 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中include()与require()的区别说明
2010/03/10 PHP
php笔记之常用文件操作
2010/10/12 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
PHP数组实例详解
2016/06/26 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
vue中将html字符串转换成html后遇到的问题小结
2018/12/10 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python绘制的二项分布概率图示例
2018/08/22 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
Python连接字符串过程详解
2020/01/06 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
银行会计业务的个人自我评价
2013/11/02 职场文书
优秀班组长事迹
2014/05/31 职场文书
2014年教师业务工作总结
2014/12/19 职场文书
基层党支部承诺书
2015/04/30 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书