zoukankan      html  css  js  c++  java
  • Python读取word文档内容

    1,利用python读取纯文字的word文档,读取段落和段落里的文字。

    先读取段落,代码如下:

     1 '''
     2     #利用python读取word文档,先读取段落
     3 '''
     4 #导入所需库
     5 from docx import Document
     6 
     7 #打开word文档
     8 document = Document("D:/路径/长恨歌.docx")
     9 
    10 #获取所有段落
    11 all_paragraphs = document.paragraphs
    12 #打印看看all_paragraphs是什么东西
    13 print(type(all_paragraphs)) #<class 'list'>,打印后发现是列表
    14 #是列表就开始循环读取
    15 for paragraph in all_paragraphs:
    16     #打印每一个段落的文字
    17     print(paragraph.text)

    效果:

    再读取段落里的内容,代码如下:

     1 '''
     2     #利用python读取word文档
     3 '''
     4 #导入所需库
     5 from docx import Document
     6 
     7 #打开word文档
     8 document = Document("D:/路径/长恨歌.docx")
     9 
    10 #获取所有段落
    11 all_paragraphs = document.paragraphs
    12 #打印看看all_paragraphs是什么东西
    13 print(type(all_paragraphs)) #<class 'list'>,打印后发现是列表
    14 #是列表就开始循环读取
    15 for paragraph in all_paragraphs:
    16     #打印每一个段落的文字
    17     #print(paragraph.text)
    18     #循环读取每个段落里的run内容
    19     for run in paragraph.runs:
    20         print(run.text) #打印run内容

    效果如下:

    其实都准确的获取了文字内容,但是paragraph是保留了word文档里的换行符,而run是没有保留的。

    2,利用python读取纯表格文档,那要读取的文字都是存储在单元格里,需要读取单元格里的内容:

     1 '''
     2     #利用python读取word文档,表格文档
     3 '''
     4 #导入所需库
     5 from docx import Document
     6 
     7 #打开文件
     8 document = Document("D:/路径/长恨歌-表格.docx")
     9 #获取文档所有表格
    10 all_tables = document.tables
    11 
    12 #打印all_tables类型
    13 print(type(all_tables)) #得到<class 'list'>,即列表
    14 #开始循环读取表格列表
    15 for table in all_tables:
    16     #循环读取表格的每一行
    17     for row in table.rows:
    18         #print(row)
    19         #循环读取表格的每一个单元格
    20         for cell in row.cells:
    21             #打印单元格里的内容
    22             print(cell.text) #打印

    3,利用python读取word文档,文档是表格加文字组合而成的。这个就设计word文档格式问题了。将要处理的word文档后缀名改为zip,发现也可以打开,里面有几个文件如图:

    点开word目录,发现有个document.xml,这就是我们要处理的文件。

    代码开始:

     1 '''
     2     #利用python读取word文档,表格文档
     3 '''
     4 #导入所需库
     5 import zipfile #解压文件库
     6 #先将要处理的word文档用zipfile进行压缩
     7 word = zipfile.ZipFile('D:/路径/长恨歌-文字+表格.docx')
     8 
     9 #找到要处理的xml文件并以utf-8的格式读取
    10 xml = word.read('word/document.xml').decode('utf-8')
    11 #打印看看
    12 #print(type(xml)) #字符串
    13 #print(xml) #打印整个字符串
    14 #接下来分割字符串并存储到列表中
    15 xml_list = xml.split('<w:t>') #以字符串<w:t>进行分割字符串
    16 #打印看是否符合预期
    17 #print(type(xml_list)) #是列表
    18 #print(xml_list) #列表内容
    19 
    20 #开始切片,找标签</w:t>
    21 text_list = [] #新建空list用以存储切出来的数据
    22 #开始循环读取列表xml_list
    23 for i in xml_list:
    24     #条件查找
    25     if i.find('</w:t>') + 1: #切片查找是如果没找到是会返回-1,我们+1让他返回0,再运行else分支
    26         text_list.append(i[:i.find('</w:t>')]) #如果不是返回0就把找到的依次追加到text_list末尾
    27     else:
    28         pass
    29 #print(text_list)
    30 #再将得到的列表拆分为字符串
    31 text = ''.join(text_list) #以空字符串为间隔,将列表拆分为字符串
    32 print(text)

    第三个表格加文字的取出文字有点绕,多处理几遍就行了。

  • 相关阅读:
    Vue开发之vue-router的基本使用
    react监听URL的正确方式
    Electron Windows增加托盘悬浮框功能
    vue自定义标签和单页面多路由实现
    如何通过带有Vue插槽的组件传递HTML内容
    Flutter使用JsBridge方式处理Webview与H5通信
    npm实用知识_命令合集
    <keep-alive> 缓存及其缓存优化原理
    深入学习和理解 Redux
    Centos7使用Yum安装高版本的LNMP
  • 原文地址:https://www.cnblogs.com/mafu/p/13968857.html
Copyright © 2011-2022 走看看