解决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 相关文章推荐
tensorflow 中对数组元素的操作方法
Jul 27 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
Python Datetime模块和Calendar模块用法实例分析
Apr 15 Python
简单了解python高阶函数map/reduce
Jun 28 Python
利用Python的turtle库绘制玫瑰教程
Nov 23 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
关于python中remove的一些坑小结
Jan 04 Python
python利用appium实现手机APP自动化的示例
Jan 26 Python
python 判断文件或文件夹是否存在
Mar 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的库,结果发现很多东西
2006/12/31 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
Javascript中作用域的详细介绍
2016/10/06 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
vuejs如何配置less
2017/04/25 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
python的类方法和静态方法
2014/12/13 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
python实现五子棋游戏
2019/06/18 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
大学迎新晚会主持词
2014/03/24 职场文书
建房协议书
2014/04/11 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
2014年审计人员工作总结
2014/12/19 职场文书