解决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代码来实现服务器和代理服务器
Jun 23 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
Django实现分页功能
Jul 02 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
使用python快速实现不同机器间文件夹共享方式
Dec 22 Python
python绘制玫瑰的实现代码
Mar 02 Python
python 生成任意形状的凸包图代码
Apr 16 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
pytorch 如何使用float64训练
May 24 Python
使用Django实现商城验证码模块的方法
Jun 01 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
星际争霸中的热键
2020/03/04 星际争霸
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
asp.net和php的区别点总结
2019/10/10 PHP
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
简单叙述一下MYSQL的优化
2016/05/09 面试题
观看《永远的雷锋》心得体会
2014/03/12 职场文书
委托书的写法
2014/08/30 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
重阳节标语大全
2014/10/07 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android
python的html标准库
2022/04/29 Python
MySQL池化框架学习接池自定义
2022/07/23 MySQL