python 顺序读取DOCX的内容数据

import os

# import docx

from docx import Document

from docx.document import Document as DO

from docx.oxml.table import CT_Tbl

from docx.oxml.text.paragraph import CT_P

from docx.table import _Cell, Table

from docx.text.paragraph import Paragraph

def get_paragraphs(docx_path):

    #打开word文档

    paragraph_texts = []

    paragraph_texts.append(docx_path.text)

    return paragraph_texts

    # document = Document(docx_path)

   

    # # #获取所有段落

    # all_paragraphs = document.paragraphs

    # paragraph_texts = []

    # # 循环读取列表

    # for paragraph in all_paragraphs:

    #     print(paragraph)

    #     paragraph_texts.append(paragraph.text)

   

    # return paragraph_texts

def get_table_text(docx_path):

    """

        获取Word文档中的表格内容  

    """

    # result = []

    # result.append(docx_path.text)

    # return result

    result = []

    document = Document(docx_path) #读入文件

    print(document)

   

    # return result

def iter_block_items(parent):  # 获取内容的格式

    """

    Yield each paragraph and table child within *parent*, in document order.

    Each returned value is an instance of either Table or Paragraph. *parent*

    would most commonly be a reference to a main Document object, but

    also works for a _Cell object, which itself can contain paragraphs and tables.

    """

    if isinstance(parent,DO):

        parent_elm = parent.element.body

    elif isinstance(parent, _Cell):

        parent_elm = parent._tc

    else:

        raise ValueError("something's not right")

    for child in parent_elm.iterchildren():

        if isinstance(child, CT_P):

            yield Paragraph(child, parent)

        elif isinstance(child, CT_Tbl):

            yield Table(child, parent)

def get_cell_content(cells):

    """

        获取每一行中每一列的内容

    """

    row_content = []

    for cell in cells: # 遍历每一行的每一个单元格

        # cell数量为表格最大列数+1,故对于较少列的行存在重复值,需去重

        if cell.text and cell.text not in row_content:

            row_content.append(cell.text)

       

    return row_content

def read_table(table):

    return [[cell.text for cell in row.cells] for row in table.rows]


 

def read_word(word_path):

    doc = Document(word_path)

    # print(doc)

    # print(x for x in iter_block_items(doc))

    for block in iter_block_items(doc):

        print(block)

        if isinstance(block, Paragraph):

            print("text", [block.text])

        elif isinstance(block, Table):

            print("table", read_table(block))

if __name__ ==  "__main__":

    path = "."

    dir_ma = os.listdir(path)

    si = ""

    k = 0

    for docx in dir_ma:

        if docx[-1] != 'x':

            continue

        doc = Document(docx)

       

        ls = []

        LL = []

        for block in iter_block_items(doc):

            if isinstance(block, Paragraph):

            #    get_paragraphs(block)

                ls.append(block.text)

            elif isinstance(block, Table):

                for x in read_table(block):

                    ls = ls + list(set(x))  

        for z in ls:

            if z == '' or z == '\t':

                continue

            LL.append(z)

        for z in LL[12:-1]:

            si = si + z + " "

        k = k + 1

        with open('txt/'+ docx[0:-5]+".txt",'w',encoding='utf-8') as fi:

            fi.write(si)

       

       

可以使用Python-docx库来实现将多个docx文件按顺序合并到一个新的docx文件中。具体实现步骤如下: 1. 安装Python-docx库:在命令行中输入`pip install python-docx`,安装Python-docx库。 2. 导入Python-docx库:在Python代码中导入Python-docx库,以便使用其中的函数和类。 ```python from docx import Document ``` 3. 定义一个函数来将多个docx文件合并到一个新的docx文件中。 ```python def merge_docx_list(docx_list, output): # 创建一个新的Document对象 merged_doc = Document() # 将所有文档的内容复制到新文档中 for docx_file in docx_list: # 读取docx文件 docx = Document(docx_file) # 将docx中的内容复制到新文档中 for paragraph in docx.paragraphs: merged_doc.add_paragraph(paragraph.text) # 保存合并后的文档 merged_doc.save(output) ``` 这个函数的参数`docx_list`是一个包含多个docx文件路径的列表,`output`是合并后的docx文件的输出路径。 4. 在主程序中调用`merge_docx_list`函数,将多个docx文件合并成一个新的docx文件。 ```python # 定义docx文件列表和输出路径 docx_list = ['docx1.docx', 'docx2.docx', 'docx3.docx'] output = 'merged_docx.docx' # 合并docx文件 merge_docx_list(docx_list, output) ``` 这段代码中,`docx_list`是一个包含多个docx文件路径的列表,`output`是合并后的docx文件的输出路径。调用`merge_docx_list`函数将`docx_list`中的所有docx文件合并成一个新的docx文件,并将合并后的docx文件保存到`output`指定的路径下。 总的来说,实现将多个docx文件依次复制到新的docx文件中的主要步骤就是:导入Python-docx库、定义一个函数来将多个docx文件合并到一个新的docx文件中、调用函数将多个docx文件合并成一个新的docx文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值