解决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中处理XML的教程
Apr 29 Python
利用python程序生成word和PDF文档的方法
Feb 14 Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
Django框架实现的分页demo示例
May 25 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
Django框架视图介绍与使用详解
Jul 18 Python
python tkinter库实现气泡屏保和锁屏
Jul 29 Python
python使用多线程编写tcp客户端程序
Sep 02 Python
Python生态圈图像格式转换问题(推荐)
Dec 02 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 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
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP 七大优势分析
2009/06/23 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
JS解析XML实例分析
2015/01/30 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
Javascript缓存API
2016/06/14 Javascript
JS实现自动阅读单词(有道单词本添加功能)
2016/11/14 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
vue将单页面改造成多页面应用的方法
2018/11/25 Javascript
layui内置模块layim发送图片添加加载动画的方法
2019/09/23 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python引用模块和查找模块路径
2016/03/17 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
python 常见的反爬虫策略
2020/09/27 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
六五普法规划实施方案
2014/03/21 职场文书
药学职务聘任书
2014/03/29 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
警示教育观后感
2015/06/17 职场文书
初中军训感言
2015/08/01 职场文书
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技