👌

python-docxでテーブルも含めてテキストを取得する

2024/06/30に公開
import docx

def read_all_text():
    # Word文書を読み込む
    doc = docx.Document(word_file_path)

    # 文書からテキストを抽出
    full_text = []
    content = doc.iter_inner_content()
    # 文書からテキストを抽出
    for element in content:
        # テーブル内のテキストの場合
        if isinstance(element, docx.table.Table):
            # 結合セルがある場合に同じデータを複数回取るので避けるようにしている
            # (縦に結合されている場合は考慮していない)
            last_cell_text = ""
            for row in element.rows:
                for cell in row.cells:
                    cell_text = ""
                    for paragraph in cell.paragraphs:
                        cell_text += paragraph.text
                    if last_cell_text != cell_text:
                        full_text.append(cell_text)
                    last_cell_text = cell_text
        # テーブル外のテキストの場合
        elif isinstance(element, docx.text.paragraph.Paragraph):
            full_text.append(element.text)
            
    # テキストを結合して全体のテキストを作成
    return "\n".join(full_text)

Discussion