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!
Dec 29 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
一文了解Python并发编程的工程实现方法
May 31 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
python进阶之自定义可迭代的类
Aug 20 Python
OpenCV+face++实现实时人脸识别解锁功能
Aug 28 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
pandas中对文本类型数据的处理小结
Nov 01 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 24 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下使用以下代码连接并测试
2008/04/09 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
用 JSON 处理缓存
2007/04/27 Javascript
JS跨域总结
2012/08/30 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
实习鉴定范文
2013/12/19 职场文书
校园达人秀策划书
2014/01/12 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
土地租赁意向书
2014/07/30 职场文书
个人作风建设心得体会
2014/10/22 职场文书
中标通知书
2015/04/17 职场文书
歌舞青春观后感
2015/06/10 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python