【Python】Wordファイルを読み込む方法

この記事では、Pythonのライブラリ python-docx を使って、Wordファイルを簡単に操作する方法を紹介します。

インストール方法から基本的な読み込み、テーブルや画像の操作、そして実践的なスクリプトの例まで、初心者でもわかりやすく解説しています。

目次から探す

python-docxのインストール

PythonでWordファイルを読み込むためには、python-docxというライブラリを使用します。

このライブラリは、Wordファイル(.docx形式)を操作するための便利なツールを提供しており、簡単にインストールして利用することができます。

pipを使ったインストール方法

まずは、python-docxをインストールする方法について説明します。

Pythonのパッケージ管理ツールであるpipを使用してインストールを行います。

以下のコマンドをターミナルまたはコマンドプロンプトで実行してください。

pip install python-docx

このコマンドを実行すると、python-docxライブラリが自動的にダウンロードされ、インストールされます。

インストールが完了すると、Pythonのスクリプト内でpython-docxをインポートして使用することができるようになります。

インストールの確認

インストールが正しく行われたかどうかを確認するために、簡単なスクリプトを実行してみましょう。

以下のコードをPythonのスクリプトファイルに記述し、実行してみてください。

import docx
print("python-docxのインストールが成功しました!")

このスクリプトを実行して、以下のようなメッセージが表示されれば、インストールは成功しています。

python-docxのインストールが成功しました!

もしエラーメッセージが表示された場合は、インストールが正しく行われていない可能性があります。

その場合は、再度pip install python-docxコマンドを実行してみてください。

これで、python-docxのインストールと確認が完了しました。

次のステップでは、実際にWordファイルを読み込む方法について詳しく説明していきます。

Wordファイルの基本的な読み込み

PythonでWordファイルを読み込むためには、python-docxライブラリを使用します。

このライブラリを使うことで、Wordファイルの内容を簡単に操作することができます。

ここでは、基本的な読み込み方法について解説します。

ドキュメントオブジェクトの作成

まず、Wordファイルを読み込むためには、Documentオブジェクトを作成する必要があります。

Documentオブジェクトは、Wordファイル全体を表すオブジェクトで、これを通じてファイルの内容にアクセスします。

以下のコードは、Documentオブジェクトを作成する方法を示しています。

from docx import Document
# Wordファイルを読み込む
doc = Document('example.docx')

このコードでは、example.docxという名前のWordファイルを読み込んでいます。

Documentオブジェクトを作成することで、このファイルの内容にアクセスできるようになります。

段落の取得

Wordファイルの内容は、段落(paragraph)として構成されています。

Documentオブジェクトを使って、ファイル内のすべての段落を取得することができます。

以下のコードは、すべての段落を取得して表示する方法を示しています。

# すべての段落を取得
for paragraph in doc.paragraphs:
    print(paragraph.text)

このコードでは、doc.paragraphsを使ってすべての段落を取得し、各段落のテキストを表示しています。

テキストの抽出

段落のテキストを抽出することは、Wordファイルの内容を解析する上で基本的な操作です。

上記のコードでは、すべての段落のテキストを表示しましたが、特定の段落や条件に基づいてテキストを抽出することも可能です。

以下のコードは、特定のキーワードを含む段落のみを抽出する方法を示しています。

# 特定のキーワードを含む段落を抽出
keyword = 'Python'
for paragraph in doc.paragraphs:
    if keyword in paragraph.text:
        print(paragraph.text)

このコードでは、keyword変数に指定したキーワードを含む段落のみを表示しています。

これにより、必要な情報だけを効率的に抽出することができます。

以上が、Wordファイルの基本的な読み込み方法です。

次のセクションでは、さらに詳細な操作方法について解説します。

Wordファイルの詳細な操作

Wordファイルにはテキストだけでなく、テーブルや画像などのさまざまな要素が含まれています。

ここでは、python-docxを使ってこれらの要素をどのように読み込むかについて詳しく解説します。

テーブルの読み込み

Wordファイル内のテーブルを読み込む方法について説明します。

テーブルは、行と列で構成されるデータの集合体で、文書内の情報を整理するのに便利です。

テーブルオブジェクトの取得

まず、Wordファイル内のテーブルオブジェクトを取得する方法を見てみましょう。

以下のコードは、Wordファイル内のすべてのテーブルを取得する方法を示しています。

from docx import Document
# Wordファイルを読み込む
doc = Document('sample.docx')
# ドキュメント内のすべてのテーブルを取得
tables = doc.tables
# 取得したテーブルの数を表示
print(f"テーブルの数: {len(tables)}")

このコードを実行すると、Wordファイル内のテーブルの数が表示されます。

テーブルのセルデータの抽出

次に、取得したテーブルからセルデータを抽出する方法を見てみましょう。

以下のコードは、最初のテーブルのすべてのセルデータを抽出して表示する方法を示しています。

# 最初のテーブルを取得
table = tables[0]
# テーブルの行をループ
for row in table.rows:
    # 行内のセルをループ
    for cell in row.cells:
        # セルのテキストを表示
        print(cell.text)

このコードを実行すると、最初のテーブル内のすべてのセルのテキストが表示されます。

画像の読み込み

Wordファイル内の画像を読み込む方法について説明します。

画像は、文書内の視覚的な情報を提供するために使用されます。

画像オブジェクトの取得

まず、Wordファイル内の画像オブジェクトを取得する方法を見てみましょう。

以下のコードは、Wordファイル内のすべての画像を取得する方法を示しています。

from docx import Document
# Wordファイルを読み込む
doc = Document('sample.docx')
# ドキュメント内のすべての画像を取得
images = [shape for shape in doc.inline_shapes if shape.type == 3]
# 取得した画像の数を表示
print(f"画像の数: {len(images)}")

このコードを実行すると、Wordファイル内の画像の数が表示されます。

画像データの保存

次に、取得した画像データを保存する方法を見てみましょう。

以下のコードは、最初の画像をファイルとして保存する方法を示しています。

# 最初の画像を取得
image = images[0]
# 画像データをバイナリ形式で取得
image_data = image._inline.graphic.graphicData.pic.blipFill.blip.embed
# 画像データをファイルとして保存
with open('extracted_image.png', 'wb') as f:
    f.write(image_data)

このコードを実行すると、最初の画像がextracted_image.pngというファイル名で保存されます。

以上が、Wordファイル内のテーブルと画像を読み込む方法の詳細な解説です。

これらの方法を使って、Wordファイル内のさまざまな要素を効率的に操作することができます。

実践例

ここでは、実際にPythonを使ってWordファイルを読み込む具体的な例を紹介します。

これらの例を通じて、python-docxライブラリの使い方をより深く理解できるでしょう。

簡単なWordファイルの読み込みスクリプト

まずは、基本的なWordファイルの読み込みスクリプトを作成してみましょう。

このスクリプトでは、Wordファイルの段落を読み込み、その内容を表示します。

from docx import Document
# Wordファイルを読み込む
doc = Document('sample.docx')
# 各段落のテキストを表示
for para in doc.paragraphs:
    print(para.text)

このスクリプトを実行すると、sample.docxファイル内のすべての段落がコンソールに表示されます。

非常にシンプルですが、これだけでWordファイルの内容を簡単に確認することができます。

複数のWordファイルを一括で読み込む方法

次に、複数のWordファイルを一括で読み込む方法を紹介します。

例えば、特定のフォルダ内にあるすべてのWordファイルを読み込み、それぞれの内容を表示するスクリプトを作成します。

import os
from docx import Document
# フォルダ内のすべてのWordファイルを取得
folder_path = 'word_files'
word_files = [f for f in os.listdir(folder_path) if f.endswith('.docx')]
# 各Wordファイルを読み込み、内容を表示
for file_name in word_files:
    file_path = os.path.join(folder_path, file_name)
    doc = Document(file_path)
    print(f'--- {file_name} ---')
    for para in doc.paragraphs:
        print(para.text)
    print('\n')

このスクリプトでは、word_filesフォルダ内のすべての.docxファイルをリストアップし、それぞれのファイルを読み込んで内容を表示します。

これにより、複数のWordファイルを一度に処理することができます。

読み込んだデータの加工と保存

最後に、読み込んだデータを加工し、新しいWordファイルとして保存する方法を紹介します。

ここでは、読み込んだ段落のテキストをすべて大文字に変換し、新しいファイルに保存する例を示します。

from docx import Document
# Wordファイルを読み込む
doc = Document('sample.docx')
# 新しいドキュメントを作成
new_doc = Document()
# 各段落のテキストを大文字に変換して新しいドキュメントに追加
for para in doc.paragraphs:
    new_doc.add_paragraph(para.text.upper())
# 新しいドキュメントを保存
new_doc.save('modified_sample.docx')

このスクリプトでは、sample.docxファイルを読み込み、各段落のテキストを大文字に変換して新しいドキュメントに追加しています。

最後に、modified_sample.docxという名前で新しいファイルを保存します。

これらの実践例を通じて、python-docxライブラリを使ったWordファイルの読み込み、加工、保存の基本的な操作を理解できたと思います。

これを基に、さらに複雑な処理やカスタマイズを行うことができるでしょう。

目次から探す