動作検証バージョン:64bit版 Windows 10 Pro + Python 3.8.0 + python-docx 0.8.10
python-docxを使って、Word文書内の表データを1行ずつリストにできることをご紹介しました。
python-pptxでできたように、2重ループを使わずに表内文字列の取得がWordでも可能なのかが気になり、試してみました。
[スポンサードリンク]
Word文書の表内テキストを取得するサンプル
Wordの場合、以下のようなスクリプトで、表内文字列を取得できます。
import docx
print(cell.text)
doc = docx.Document(r'c:\temp\foo.docx')
tbl = doc.tables[0]
print(cell.text)
表の存在するWord文書を、Cドライブtempフォルダーにfoo.docxとして保存した状態で上記スクリプトを実行すると、表内文字列を取得できる様子が確認できます。
表内テキストを取得するサンプルで行っている処理
アンダーバー1個で始まる属性名のため少々気になりますけれど、Tableオブジェクトの_cells属性を使うと、for cell in tbl._cells:
>>> dir(tbl)_Cellオブジェクトを要素として持つリストを取得できます。
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_cells', '_column_count', '_element', '_parent', '_tbl', '_tblPr', 'add_column', 'add_row', 'alignment', 'autofit', 'cell', 'column_cells', 'columns', 'part', 'row_cells', 'rows', 'style', 'table', 'table_direction']
>>> type(tbl._cells)
<class 'list'>
for文で取得した各_Cellオブジェクトのtext属性を取得しているのが、
print(cell.text)
上記のスクリプトです。
最終更新日時:2020-03-25 10:32
[スポンサードリンク]
Home » Python » python-docxの使い方 » python-docxでも表内テキストを2重ループを使わず取得できる