Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

【自動化】PythonでWordの文書を読み取る

Word文書をPythonで読み取る

契約書や報告書などオフィスでは様々な文書がありますが、主流は【Word文書】かと思います。

業務を自動化するにあたっては、Word文書の作成や読み取りを自動化したいというケースも多そうです。
実際、私も3ヶ月ごとに作成する委託契約書の作成をPythonで自動化しています。

本記事では、python-docxというライブラリを使ってPythonでWord文書を読み取る方法を解説します。
(次回はWord文書の作成や置換についてご紹介します。)

Word文書の読み取り

python-docxは標準ライブラリではありません。Anacondaでもデフォルトでは入っていないのでまずインストールしましょう。

pip install python-docx

インストールが終わったらライブラリをimportします。
importのときはpython-docxではなくdocxなので注意してください。

python
import docx

次にWord文書を読み込んでオブジェクトを作成します。
ここでは「テスト.docx」という下記のような文書を読み込みます。
test_docx.png

python
document = docx.Document("テスト.docx")

このdocumentオブジェクトはparagraphsというリストと、tablesというリストを持ちます。

paragraphsは本文中の段落のことで、tablesは表のことです。
tablesは行をrowsのリストとして持ち、さらにrowsは列(セル)をcellsというリストとして持っています。
テキストを取得したい場合は、textという属性を参照します。

つまり、このような構造になります。
python-docx.png

python
for paragraph in word.paragraphs:
    print(paragraph.text)
実行結果
ここは1段落目。

ここは2段落目。

python
for table in document.tables:
    for row in table.rows:
        for cell in row.cells:
            print(cell.text)
実行結果
ここは表の1行/1列
ここは表の1行/2列
ここは表の2行/1列
ここは表の2行/2列

注意点

残念ながら、python-docxでは脚注を読み取ることはできません。
※少なくとも、私はいくら調べても脚注を操作する方法がわかりませんでした。もし、何か情報をお持ちならコメントいただけると幸いです。

脚注も含めて操作したい場合には、別の方法を検討する必要がありそうです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
17
Help us understand the problem. What are the problem?