解决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字符串替换的2种方法
Nov 30 Python
由Python运算π的值深入Python中科学计算的实现
Apr 17 Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 Python
Python基于pygame实现的弹力球效果(附源码)
Nov 11 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
Python中正则表达式详解
May 17 Python
TensorFlow的权值更新方法
Jun 14 Python
jupyter notebook 多行输出实例
Apr 09 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
Python初学者必备的文件读写指南
Jun 23 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
?繁体转换的class
2006/10/09 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
PHP的基本常识小结
2013/07/05 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
动态加载js文件简单示例
2016/04/21 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Python学习思维导图(必看篇)
2017/06/26 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
Unix如何添加新的用户
2014/08/20 面试题
2014年组织委员工作总结
2014/12/01 职场文书
升学宴学生答谢词
2015/01/05 职场文书
实名检举信范文
2015/03/02 职场文书
毕业感言怎么写
2015/07/31 职场文书
会计做账心得体会
2016/01/22 职场文书
SQLServer之常用函数总结详解
2021/08/30 SQL Server
详解在OpenCV中如何使用图像像素
2022/03/03 Python
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS