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 查找文件夹下所有文件 实现代码
Jul 01 Python
Python入门之modf()方法的使用
May 15 Python
利用Python实现Windows定时关机功能
Mar 21 Python
浅谈Python中range和xrange的区别
Dec 20 Python
Python中的函数作用域
May 07 Python
python生成带有表格的图片实例
Feb 03 Python
python批量创建指定名称的文件夹
Mar 21 Python
Python日志无延迟实时写入的示例
Jul 11 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
python将字符串转变成dict格式的实现
Nov 18 Python
Python脚本导出为exe程序的方法
Mar 25 Python
python中用ggplot绘制画图实例讲解
Jan 26 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
8个超棒的学习 jQuery 的网站 推荐收藏
2011/04/02 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
js读取本地文件的实例
2017/12/22 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
教师找工作推荐信
2013/11/23 职场文书
公司财务自我评价分享
2013/12/17 职场文书
和睦家庭事迹
2014/05/14 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
烟台的海导游词
2015/02/02 职场文书
工作感言一句话
2015/08/01 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
Python实现信息管理系统
2022/06/05 Python
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android