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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
编写Python脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
深入理解Python爬虫代理池服务
Feb 28 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
python 读取更新中的log 或其它文本方式
Dec 24 Python
python numpy 矩阵堆叠实例
Jan 17 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
Python抓包并解析json爬虫的完整实例代码
Nov 03 Python
python中函数返回多个结果的实例方法
Dec 16 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
Python3使用Selenium获取session和token方法详解
Feb 16 Python
Python实现简单的猜单词
Jun 15 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
浅析Python数据处理
2018/05/02 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Django的性能优化实现解析
2019/07/30 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
英语自荐信常用语句
2013/12/13 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
监督检查工作方案
2014/05/28 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
离婚协议书范文2015
2015/01/26 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
改造DE1103三步曲
2022/04/07 无线电