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使用htpasswd实现基本认证授权的例子
Jun 10 Python
Python文件处理
Feb 29 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
Python3.4实现远程控制电脑开关机
Feb 22 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
将python文件打包成EXE应用程序的方法
May 22 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
python项目对接钉钉SDK的实现
Jul 15 Python
python求绝对值的三种方法小结
Dec 04 Python
python 实现音频叠加的示例
Oct 29 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
单位速度在实战中的运用
2020/03/04 星际争霸
php实现约瑟夫问题的方法小结
2015/03/23 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
JavaScript静态的动态
2006/09/18 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
javascript常见操作汇总
2014/09/03 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
Python复制文件操作实例详解
2015/11/10 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
利用Python爬取可用的代理IP
2016/08/18 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
Python3匿名函数用法示例
2018/07/25 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
Python实现数值积分方式
2019/11/20 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
python 串行执行和并行执行实例
2020/04/30 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
办理信用卡工作证明
2014/01/11 职场文书
高校教师思想汇报
2014/01/11 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
简历自我评价模板
2015/03/11 职场文书
工作推荐信模板
2015/03/25 职场文书
海上钢琴师观后感
2015/06/03 职场文书
python某漫画app逆向
2021/03/31 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python