zoukankan      html  css  js  c++  java
  • python如何实现对word内段落文本及表格的读取

    在以下方法中用到的三方库是:python-docx

    from docx import Document

    获取指定段落的文本

    def get_paragraph_text(path, n):
        """
        获取指定段落的文本
        :param path: word路径
        :param n: 第几段落,从0开始计数
        :return: word文本
        """
        document = Document(path)
        all_paragraphs = len(document.paragraphs)
        if all_paragraphs > n:
            paragraph_text = document.paragraphs[n].text
            return paragraph_text
        else:
            raise IndexError('paragraph index (%s) out of range, in total %s' % (n, all_paragraphs))

    获取全部段落的文本

    def get_paragraphs_text(path):
        """
        获取所有段落的文本
        :param path: word路径
        :return: list类型,如:
            ['Test', 'hello world', ...]
        """
        document = Document(path)
        all_paragraphs = document.paragraphs
        paragraphs_text = []
        for paragraph in all_paragraphs:
            paragraphs_text.append(paragraph.text)
        return paragraphs_text

    获取所有表格的文本

    def get_all_tables_text(path):
        """
        获取word中所有表格的文本
        :param path: word路径
        :return: list类型的二维数组
            如:[['年龄', '排序'], ['23', '00',], ...]
        """
        document = Document(path)
        all_tables = document.tables
        text_list = []
        for table in all_tables:
            for row in table.rows:
                text = []
                for cell in row.cells:
                    text.append(cell.text)
                text_list.append(text)
        return text_list

    获取指定表格的文本

    def get_table_text(path, n=0):
        """
        获取word中的第n个表格的文本
        :param path: word路径
        :param n: 第几个表格,从0开始计算
        :return: list类型的二维数组
            如:[['年龄', '排序'], ['23', '00',], ...]
        """
        document = Document(path)
        all_tables = len(document.tables)
        if all_tables > n:
            table = document.tables[n]
            text_list = []
            for row in table.rows:
                text = []
                for cell in row.cells:
                    text.append(cell.text)
                text_list.append(text)
            return text_list
        else:
            raise IndexError('table index (%s) out of range, in total %s' % (n, all_tables))

    获取指定表格内指定单元格文本

    def get_cell_text(path, n=0, row=0, col=0):
        """
        获取某个表格的某个单元格的值
        :param path: word路径
        :param n: 第几个表格,从0开始计算
        :param row: 第几行,从0开始计算
        :param col: 第几列,从0开始计算
        :return: 单元格的值,str类型
        """
        document = Document(path)
        all_tables = len(document.tables)
        if all_tables > n:
            rows = len(document.tables[n].rows)
            cols = len(document.tables[n].columns)
            if rows > row and cols > col:
                tab = document.tables[n].rows[row].cells[col]
                return tab.text
            else:
                raise IndexError('cell index out of range, %s;%s' % (row, col))
        else:
            raise IndexError('table index (%s) out of range, in toatl %s' % (n, all_tables))
    

      

  • 相关阅读:
    Idea如果添加Maven模块
    idea在debugger模式下无法启动,但是在run模式下可以启动的问题
    Idea搭建SpringMVC框架(初次接触)
    Intellij IDEA 环境 tomcat 启动设置
    Winform .NET 利用NPOI导出大数据量的Excel
    unity3D AudioMixer+Slider实现音量调节,多音效控制(主音量,背景音,特效音等)
    unity3D 点击按钮暂停和继续游戏
    unity3D AsyncOperation异步加载场景&百分比效果
    unity3D 实现2D游戏背景层交错感(视觉差)
    unity3D 重新加载当前场景&加载当前场景的下一个场景
  • 原文地址:https://www.cnblogs.com/rongge95500/p/12486841.html
Copyright © 2011-2022 走看看