解决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 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
python读取浮点数和读取文本文件示例
May 06 Python
python实现每次处理一个字符的三种方法
Oct 09 Python
Python 基础知识之字符串处理
Jan 06 Python
浅谈scrapy 的基本命令介绍
Jun 13 Python
python xlsxwriter库生成图表的应用示例
Mar 16 Python
Django rest framework实现分页的示例
May 24 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
django 通过URL访问上传的文件方法
Jul 28 Python
django如何自定义manage.py管理命令
Apr 27 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 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下保存远程图片到本地的办法
2010/08/08 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
JS前端笔试题分析
2016/12/19 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
Python import自定义模块方法
2015/02/12 Python
Python计算三维矢量幅度的方法
2015/06/15 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
对python 自定义协议的方法详解
2019/02/13 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
工商管理实习自我鉴定
2013/09/28 职场文书
金融专业毕业生推荐信
2013/11/26 职场文书
中层干部竞争上岗演讲稿
2014/01/13 职场文书
办公室文员工作职责
2014/01/31 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
滴水洞导游词
2015/02/10 职场文书
关于Numpy之repeat、tile的用法总结
2021/06/02 Python