zoukankan      html  css  js  c++  java
  • python中使用docx库操作word文档记录(1)- 读取文本和表格

    python中使用docx库操作word文档记录(1)- 读取文本和表格

    本文记录docx库读取word文本和表格的方法

    一、使用docx模块

    Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。

    安装方法为:pip install python-docx

    二、相关概念

    先了解python-docx模块的几个概念。

    1,Document对象,表示一个word文档。
    2,Paragraph对象,表示word文档中的一个段落
    3,Paragraph对象的text属性,表示段落中的文本内容。

    在这里插入图片描述

    三、读取文本

    from docx import Document #导入库
    
    path = 'ys.docx' #文件路径
    wordfile = Document(path) #读入文件
    
    paragraphs = wordfile.paragraphs 
    
    #输出每一段的内容
    for paragraph in wordfile.paragraphs: 
        print(paragraph.text +"
     end")
    
     
    #输出段落编号及段落内容
    for i in range(len(wordfile.paragraphs)):
     print("第"+str(i)+"段的内容是:"+wordfile.paragraphs[i].text)
    
    

    如果不需要获取文本中的空行,则可以增加下面的判断条件:

    if paragraphs[i].text.strip()!="": # 去空行
    或者
    if paragraph.text.count("
    ") == len(paragraph.text): # 去空行
    

    四、读取表格

    from docx import Document #导入库
    
    path = '1.docx' #文件路径
    document = Document(path) #读入文件
    tables = document.tables #获取文件中的表格集
    
    print(len(tables)) #获取文件中的表格数量
    
    for table in tables:#遍历每一个表格
        for row in table.rows:#从表格第一行开始循环读取表格数据
        	for cell in row.cells:#遍历每一个单元格
        		print(cell.text) #获取单元格的内容
    '''  
    后面两行也可以用下面的方式
            for j in range(len(row.cells)):
               print(row.cells[j].text)
    '''
    

    这里要说明一下,不是word里面所有的表格都能正确读取。

    如下图:带一个锚,表格外围有虚线的这类表格提取不到,不知道有没有好的方法。

    这类的表格一般是pdf或者其他系统生成的表格,并非直接在word中插入的表格。
    在这里插入图片描述

  • 相关阅读:
    移动端屏幕旋转的事件和样式方案。
    active:移动端触摸按钮的效果。
    移动端字体单位该使用px还是rem?
    Cordova/Ionic Android 开发环境搭建
    JavaScript 深拷贝(deep copy)和浅拷贝(shallow copy)
    你不知道的JS之 this 和对象原型(一)this 是什么
    你不知道的JS之作用域和闭包 附录
    你不知道的JS之作用域和闭包(五)作用域闭包
    你不知道的JS之作用域和闭包(四)(声明)提升
    你不知道的JS之作用域和闭包(三)函数 vs. 块级作用域
  • 原文地址:https://www.cnblogs.com/eternalpal/p/14082231.html
Copyright © 2011-2022 走看看