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))

  

posted @   cnblogs用户  阅读(6616)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2019-03-13 算法和数据结构
点击右上角即可分享
微信分享提示