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 10 Python
Python解析树及树的遍历
Feb 03 Python
Python的Django框架中forms表单类的使用方法详解
Jun 21 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
如何基于Python + requests实现发送HTTP请求
Jan 13 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
python字符串判断密码强弱
Mar 18 Python
如何基于python把文字图片写入word文档
Jul 31 Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 Python
pycharm 的Structure界面设置操作
Feb 05 Python
基于python的matplotlib制作双Y轴图
Apr 20 Python
Python list列表删除元素的4种方法
Nov 01 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
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
js实现无缝滚动图
2017/02/22 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
跟老齐学Python之Python安装
2014/09/12 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
np.random.seed() 的使用详解
2020/01/14 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
Java面向对象面试题
2016/12/26 面试题
电大自我鉴定
2013/10/27 职场文书
QA工程师岗位职责
2013/11/20 职场文书
小学教师师德感言
2014/02/10 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
担保书范文
2019/07/09 职场文书
nginx设置资源请求目录的方式详解
2022/05/30 Servers