Pythonはdocxドキュメント(テキスト+テーブル)の情報を抽出します

1.説明:

この記事の要件は、テキストやExcelのテーブル情報など、docxドキュメントのデータ情報を抽出することです。
検索の朝の後、私はいくつかのテキストを見つけ、それを必要なコードにソートしました。

次に、データを抽出します

モジュールをインストールします。

ここで直接インストールを注文できます。

pip install python-docx

1.テキストコンテンツを抽出します。

ここでは、元の各行のみを大きな文字列として保存します。
ナンセンスではありません。コードにアクセスしてください:

import docx

def extract_docx_text(docFile):
    # 获取文档对象
    document = docx.Document(docFile)
    # 完整的text:
    docx_text = ""
    for para in document.paragraphs:
        docx_text += para.text + '\n'
    return docx_text


if __name__ == '__main__':
    docFile = 'W020200731560335069483.docx'
    docx_text = extract_docx_text(docFile)
    print("docx_text", docx_text)

効果画像:

各行の内容を区別するための後続のニーズを容易にするために、各行の内容に従って保存するか、または大きな文字列スタイルを元の行として保存するか。
ここに画像の説明を挿入

2. Excelテーブルの内容を抽出します。

ここですべてのテーブルを読み、テーブルの列名をキー、値をリストとして、各テーブルに従ってjson形式を作成します。

1)、リストとしてのデータの各列

from docx import Document



def extract_table_data(tables_i):
    columns = tables_i.columns
    tables_i_json = {
    
    }
    # 列标题
    columns_name_json = {
    
    }  # 用来下面表格的行做铺垫使用
    for columns_i in range(len(columns)):
        tables_i_json[tables_i.cell(0, columns_i).text] = []
        columns_name_json[columns_i] = tables_i.cell(0, columns_i).text

    for row_i in range(1, len(tables_i.rows)):  # 从表格第二行开始循环读取表格数据
        for columns_i in range(len(columns)):
            tables_i_json[columns_name_json[columns_i]].append(tables_i.cell(row_i, columns_i).text)
    return tables_i_json



def extract_docx_excel_data(docFile):
    document = Document(docFile)  # 读入文件
    # print("document",dir(document))
    tables = document.tables  # 获取文件中的表格集
    # print("dir", dir(document))
    # print("tables", tables)
    tables_json = []
    for tables_i in tables:
        tables_i_json = extract_table_data(tables_i)
        tables_json.append(tables_i_json)
    print("tables_json",tables_json)
    return tables_json


if __name__ == '__main__':
    docFile = 'W020200731560335069483.docx'
    tables_json = extract_docx_excel_data(docFile)

2)1行に1つのjson:

from docx import Document



def extract_table_data(tables_i):
    columns = tables_i.columns
    """每列作为列表"""
    # tables_i_json = {}
    # # 列标题
    # columns_name_json = {}  # 用来下面表格的行做铺垫使用
    # for columns_i in range(len(columns)):
    #     tables_i_json[tables_i.cell(0, columns_i).text] = []
    #     columns_name_json[columns_i] = tables_i.cell(0, columns_i).text
    #
    # for row_i in range(1, len(tables_i.rows)):  # 从表格第二行开始循环读取表格数据
    #     for columns_i in range(len(columns)):
    #         tables_i_json[columns_name_json[columns_i]].append(tables_i.cell(row_i, columns_i).text)
    """每行一个json"""
    table_data = []
    # # 列标题
    head_name = []
    for columns_i in range(len(columns)):
        head_name.append(tables_i.cell(0, columns_i).text)

    for row_i in range(1, len(tables_i.rows)):  # 从表格第二行开始循环读取表格数据
        row_json = {
    
    }
        for columns_i in range(len(columns)):
            row_json[head_name[columns_i]] = tables_i.cell(row_i, columns_i).text
        table_data.append(row_json)

    return table_data



def extract_docx_excel_data(docFile):
    document = Document(docFile)  # 读入文件
    # print("document",dir(document))
    tables = document.tables  # 获取文件中的表格集
    # print("dir", dir(document))
    # print("tables", tables)
    tables_json = []
    for tables_i in tables:
        tables_i_json = extract_table_data(tables_i)
        tables_json.append(tables_i_json)
    print("tables_json",tables_json)
    return tables_json


if __name__ == '__main__':
    docFile = 'W020200731560335069483.docx'
    tables_json = extract_docx_excel_data(docFile)

問題を解決するには、コードをアップロードして、独自のdocFileファイルパスを変更するだけです。

参考研究のためのいくつかの記事:

https://zhuanlan.zhihu.com/p/55963556
https://www.cnblogs.com/klb561/p/9982937.html
https://blog.csdn.net/weixin_40449300/article/details/79143971
https:/ /blog.csdn.net/woshisangsang/article/details/75221723
https://zhuanlan.zhihu.com/p/45997055

おすすめ

転載: blog.csdn.net/weixin_42081389/article/details/108235948