解决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读取ini文件、操作mysql、发送邮件实例
Jan 01 Python
python使用自定义user-agent抓取网页的方法
Apr 15 Python
Python语言描述最大连续子序列和
Dec 05 Python
scrapy爬虫实例分享
Dec 28 Python
Django组件之cookie与session的使用方法
Jan 10 Python
对python_discover方法遍历所有执行的用例详解
Feb 13 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
Python整数与Numpy数据溢出问题解决
Sep 11 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 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中替换换行符的几种方法小结
2012/10/15 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
PHP 裁剪图片
2021/03/09 PHP
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
办理退休介绍信
2014/01/09 职场文书
大二自我鉴定
2014/01/31 职场文书
年度考核自我鉴定
2014/02/02 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
品牌宣传方案
2014/03/21 职场文书
个人授权委托书范本
2014/09/14 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技