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命名空间详解
Aug 18 Python
python使用BeautifulSoup分析网页信息的方法
Apr 04 Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
python的time模块和datetime模块实例解析
Nov 29 Python
Python装饰器原理与基本用法分析
Jan 07 Python
通过实例了解Python str()和repr()的区别
Jan 17 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
python画图常规设置方式
Mar 05 Python
Python super()方法原理详解
Mar 31 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
Django项目在pycharm新建的步骤方法
Mar 02 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
php上传文件常见问题总结
2015/02/03 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP实现的微信公众号扫码模拟登录功能示例
2019/05/30 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
jquery select下拉框操作的一些说明
2010/04/02 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
javascript基础知识
2016/06/07 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
js实现省级联动(数据结构优化)
2020/07/17 Javascript
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Python扩展内置类型详解
2018/03/26 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
《再见了,亲人》教学反思
2014/02/26 职场文书
《木笛》教学反思
2014/03/01 职场文书
优秀大学生自荐信
2014/06/09 职场文书
任命书怎么写
2015/03/02 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
sql字段解析器的实现示例
2021/06/23 SQL Server
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫