解决python大批量读写.doc文件的问题


Posted in Python onMay 08, 2018

前言:

java语言读写.doc的出现乱码问题:

大家都知道当我们利用java语言读写.doc文件时,无论是利用流的方式将.doc文件的内容输出到控制台(console),还是将其写到其他文件中,无论你采取何种编码格式(utf-8,gbk等)输出,你看到的内容99%都是乱码。

java语言读写.doc的出现乱码问题原因分析:

.doc文件是微软开发的用于办公的编辑文字的软件之一,如果说一篇word文档的字体格式采用的是utf-8,那么你采用utf-8格式读写该文档,应该能够正确输出汉字,但是一旦你的word文档里面的字体的尺寸改变,字体加上颜色属性,字体加上某种style时,那么本篇word文档的格式就变了,而不再是utf-8,因此采用utf-8格式输出99%都是乱码。

利用java语言读写.doc文档避免乱码的解决方案:(sun公司pk微软公司)

可以利用sun公司开发的poi包,该包提供修改微软办公软件的接口,利用poi包读写.doc文件,通常就不会产生乱码。如果看到这里你就大概认为,我终于可以利用java去处理.doc文件了,那么我想说的是,你开心的太早了。据我所知,截止到2017年12月22日,poi包的最新版本是3.1.7版,你也许对该版本没有什么概念,3.1.7版本的poi包只能处理微软2007版本的word,excel,ppt等,也就是说poi3.1.7版本的jar包不支持处理咱们电脑上顶配的word2016,因此可以说你可以放弃使用java读写word2016了。但是你也可以尝试用其他的接口去处理word,但是效率都不会比poi接口高,幸运的是,官网显示poi最新版本将在2017年12月份推出,但是截止到2017年12月22日,我还没有在官网看到此jar包。

正文:

python在处理文档的语言处理方面比java更胜一筹,毕竟python结合正则表达式在自然语言处理方面还是很强势的。最近在做深度学习的项目,需要解析并处理几百个数量级的.doc文件。众所周知,python读写.txt文档可以说一路畅通无阻,不管你中文是什么格式;python在读写.docx文档时,也比较畅通,最多你需要在命令行安装python-docx (0.8.6),就可以读写.docx文档了,具体读写方案,下述。

问题:python无法读取.doc文件(而不是.docx文件)

解决方案:利用python将大批.doc文件转化为.docx文件,再读写.docx文件

问题分析:python利用python-docx (0.8.6)库可以读取.docx文件或.txt文件,且一路畅通无阻,而对.doc文件本身python是无能为力的,那有很多同学就不服气,我手动把.doc文件的后缀名改为.docx或.txt不就解决问题了吗?答案是不能的,简单修改后缀名,那么文件就被你玩坏了,别说打不开,就是打开也是天书啊(乱码)。python无法操作.doc文件是他的先天不足,但是我们不要钻牛角尖一定要在互联网上找到一种源码直接读取.doc文件,一调用就好了,但是不幸的是,你可能在网上也找不到解决方案。正当我一筹莫展之时,我将.doc文档利用手动的方式“另存为”.docx文档,就能够成功打开转化后的.docx文档,于是我就尝试利用代码方式完成这个手动的“另存为”功能,问题得以解决。

直接上python代码(首先你需要先安装pypewin32库):

# -*- coding: utf-8 -*-:
import sys
import pickle
import re
import codecs
import string
import shutil
from win32com import client as wc
def doSaveAas(): # 想批处理文件,你就用for循环呗,我一次性处理了100多个文件,代码执行不超过2分钟,可以解决问题,目标文件路径可以自由改动,大家注意SaveAs方法中的参数,好多啊,别写错了
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(u'C:\\Users\\X\\PycharmProjects\\1\\大家好.doc')  # 目标路径下的文件
doc.SaveAs(u'C:\\Users\\X\\PycharmProjects\\1\\我是一枚小小的程序员X007.docx', 12, False, "", True, "", False, False, False, False) # 转化后路径下的文件 
doc.Close()
word.Quit()

转化为.docx文件后,在处理.docx文件,一路畅通无阻,网上很多解决方案,这里我就不详细说了,有问题,可以给我留言哟

以上这篇解决python大批量读写.doc文件的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python编程中运用闭包时所需要注意的一些地方
May 02 Python
python实现将文本转换成语音的方法
May 28 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
10款最好的Python开发编辑器
Jul 03 Python
python中的列表与元组的使用
Aug 08 Python
如何基于Python + requests实现发送HTTP请求
Jan 13 Python
django2.2 和 PyMySQL版本兼容问题
Feb 17 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
解决jupyter notebook import error但是命令提示符import正常的问题
Apr 15 Python
python3跳出一个循环的实例操作
Aug 18 Python
python实现三壶谜题的示例详解
Nov 02 Python
Python约瑟夫生者死者小游戏实例讲解
Jan 04 Python
python在每个字符后添加空格的实例
May 07 #Python
Pycharm在创建py文件时,自动添加文件头注释的实例
May 07 #Python
python 读取DICOM头文件的实例
May 07 #Python
解决Python requests库编码 socks5代理的问题
May 07 #Python
基于python requests库中的代理实例讲解
May 07 #Python
Python操作Oracle数据库的简单方法和封装类实例
May 07 #Python
Pandas实现数据类型转换的一些小技巧汇总
May 07 #Python
You might like
FCKeditor添加自定义按钮
2008/03/27 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
php创建类并调用的实例方法
2019/09/25 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
csdn 博客的css样式 v3
2009/02/24 Javascript
jQuery textarea的长度进行验证
2009/05/06 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
详细介绍Python中的偏函数
2015/04/27 Python
Python多进程同步简单实现代码
2016/04/27 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
2015年社区居委会工作总结
2015/05/18 职场文书
初三化学教学反思
2016/02/22 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL