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网络编程示例(客户端与服务端)
Apr 24 Python
python实现unicode转中文及转换默认编码的方法
Apr 29 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
在cmd中运行.py文件: python的操作步骤
May 12 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
Dec 03 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
python识别验证码图片实例详解
Feb 17 Python
Python中的xlrd模块使用原理解析
May 21 Python
Python字符串及文本模式方法详解
Sep 10 Python
python中doctest库实例用法
Dec 31 Python
Python 第三方库 openpyxl 的安装过程
Dec 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写的采集程序
2007/03/16 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
Python爬虫工程师面试问题总结
2018/03/22 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Python如何读取文件中图片格式
2020/01/13 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
通信工程毕业生自荐信
2013/11/01 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
致青春观后感
2015/06/09 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
阿里云日志过滤器配置日志服务
2022/04/09 Servers
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers