解决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实现一个简单的能够上传下载的HTTP服务器
May 05 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
详解Django定时任务模块设计与实践
Jul 24 Python
python写一个随机点名软件的实例
Nov 28 Python
python 操作hive pyhs2方式
Dec 21 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
CentOS7下安装python3.6.8的教程详解
Jan 03 Python
关于Keras模型可视化教程及关键问题的解决
Jan 24 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
Python如何输出整数
Jun 07 Python
Python实现一个简单的毕业生信息管理系统的示例代码
Jun 08 Python
Python urllib3软件包的使用说明
Nov 18 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
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
php 伪静态之IIS篇
2014/06/02 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
tagName的使用,留一笔
2006/06/26 Javascript
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
python实现人脸识别经典算法(一) 特征脸法
2018/03/13 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
Python matplotlib可视化实例解析
2020/06/01 Python
校园自助餐厅的创业计划书
2013/12/26 职场文书
党校培训思想汇报
2014/01/03 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
《学会待客》教学反思
2014/02/22 职场文书
大学生作弊检讨书
2014/09/11 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python