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使用scrapy解析js示例
Jan 23 Python
Python装饰器的函数式编程详解
Feb 27 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
python操作MySQL 模拟简单银行转账操作
Sep 27 Python
Python的CGIHTTPServer交互实现详解
Feb 08 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
python怎么调用自己的函数
Jul 01 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 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
JSON在PHP中的应用介绍
2012/09/08 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
js右键菜单效果代码
2007/07/21 Javascript
JS跨域代码片段
2012/08/30 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
推荐下python/ironpython:从入门到精通
2007/10/02 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
法律进企业活动方案
2014/03/04 职场文书
维修工先进事迹
2014/05/29 职场文书
换届选举主持词
2015/07/03 职场文书
家长会后的感想
2015/08/11 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
angular4实现带搜索的下拉框
2022/03/25 Javascript