python处理document文档保留原样式


Posted in Python onSeptember 23, 2019

document文档格式、线段、图片、页眉页脚等都不变,供大家参考,具体内容如下

# -*- coding: utf-8 -*-
# @Time  : 2019/5/6 11:46
# @Author :
"""
# 利用python-docx替换文章中的内容

pip install python-docx
# 格式、线段、图片、页眉页脚等都不变
# python-docx 在处理超链接的问题时,可以参考一下链接对源码进行修改
https://github.com/python-openxml/python-docx/issues/85

# 具体修改操作如下
\site-packages\docx\oxml\__init__.py

# 需要新增的代码
def remove_hyperlink_tags(xml):
  import re
  text = xml.decode('utf-8')
  text = text.replace("</w:hyperlink>","")
  text = re.sub('<w:hyperlink[^>]*>', "", text)
  return text.encode('utf-8')

# 需要修改的源码
def parse_xml(xml):
  root_element = etree.fromstring(remove_hyperlink_tags(xml), oxml_parser)
  return root_element
"""

import os

from docx import Document
from win32com import client

# 自己写的逐句翻译包
import doc_scan


def pre_document(filename):
  """
  由于python_docx(只能读取.docx文件,不能读取.doc文件)
  将对应文件夹下的doc文件转为docx文件
  :param filename: 文件的绝对路径
  :return:
  """

  file_tuple = os.path.splitext(filename)
  if file_tuple[1] == '.doc':
    word = client.Dispatch('Word.Application')
    doc = word.Documents.Open(filename) # 目标路径下的文件
    doc.SaveAs(file_tuple[0] + ".docx", 16) # 转化后路径下的文件
    doc.Close()
    word.Quit()
    # 把源文件删除
    os.remove(filename)


def read_document():
  """
  原文文章为中文,然后将中文逐句翻译成英文,把英文替换原来的中文,保留文章的原样式
  :return:
  """
  # 遍历doc文件下的所有的文件
  path = os.path.dirname(os.path.abspath(__file__)) + '\doc'
  for f in os.listdir(path):
    file = "%s\%s" % (path, f)
    # 对源文件进行预处理
    pre_document(file)
    document = Document(file)
    for num, paragraph in enumerate(document.paragraphs):
      # 获取每段中的文字
      old_text = paragraph.text.strip()
      if old_text:
        inlines = paragraph.runs
        if inlines:
          # 将原有的文章里面的内容为空
          for li, inli in enumerate(inlines):
            inlines[li].text = inlines[li].text.replace(inlines[li].text, '')
          new_text = doc_scan.Scan(old_text)

          # 把翻译好的文章句子 替换到 零号位置上面
          inlines[0].text = new_text
    # 保存文件,覆盖操作
    document.save(file)


# 将document中的图片下载到本地
# document = Document(file)
# for shape in document.inline_shapes:
#   contentID = shape._inline.graphic.graphicData.pic.blipFill.blip.embed
#   contentType = document.part.related_parts[contentID].content_type
#   if not contentType.startswith('image'):
#     continue
#   imgName = basename(document.part.related_parts[contentID].partname)
#   imgData = document.part.related_parts[contentID]._blob
#   with open(imgName,'wb') as fp:
#     fp.write(imgData)

if __name__ == '__main__':
  read_document()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python标准库sched模块使用指南
Jul 06 Python
Python通过matplotlib绘制动画简单实例
Dec 13 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
python实现手机通讯录搜索功能
Feb 22 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
python删除本地夹里重复文件的方法
Nov 19 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
基于python生成英文版词云图代码实例
May 16 Python
python 用opencv实现霍夫线变换
Nov 27 Python
python绘制箱型图
Apr 27 Python
Python函数对象与闭包函数
Apr 13 Python
python标准库ElementTree处理xml
May 20 Python
python 进程间数据共享multiProcess.Manger实现解析
Sep 23 #Python
python程序 线程队列queue使用方法解析
Sep 23 #Python
python程序 创建多线程过程详解
Sep 23 #Python
详解python播放音频的三种方法
Sep 23 #Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 #Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 #Python
Python3 pandas 操作列表实例详解
Sep 23 #Python
You might like
php实现网站文件批量压缩下载功能
2015/10/28 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
微信小程序实现留言板
2018/10/31 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python类的用法实例浅析
2015/05/27 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
柯基袜:Corgi Socks
2017/01/26 全球购物
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
大学生求职简历的自我评价
2013/10/14 职场文书
关于爱情的广播稿
2014/01/16 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
验房委托书
2014/08/30 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书