Home » Python » python-pptxの使い方 » python-pptxで文字列を抽出する

動作検証バージョン:Windows 10 + Python 3.7.3 + python-pptx 0.6.18

できる 仕事がはかどるPython自動処理 全部入り。』のChapter 8「テキストデータの処理」に、python-pptxを使って、既存のプレゼンテーションファイルから、テキストを抽出するサンプルが掲載されています。

[スポンサードリンク]

Shapeオブジェクトの、TextFrameオブジェクトの、_Paragraphオブジェクトの、text属性でテキストを取得するスクリプトです。

(PowerPointファイルからのテキスト抽出の前に掲載されている)Word文書からテキストを抽出するサンプルと似た形にするためと、python-pptxを使ってPowerPointファイルを作成するケースも視野に入れて、この階層を辿るサンプルになっているのかなと想像しています。

単純に文字列を抽出するだけならば、もう少しシンプルなコードで済みそうなので試してみました。

python-pptxでテキストを抽出するサンプル

以下のスクリプトを実行すれば、Cドライブtempフォルダーに存在するfoo.pptxの全文字列が取得・printされます。


import pptx

prs = pptx.Presentation('C:\\temp\\foo.pptx')

for i, sld in enumerate(prs.slides, start=1):
    print(f'-- {i} --')
    for shp in sld.shapes:
        if shp.has_text_frame:
            print(shp.text)

python-pptxではShapeからtextを取得できる

PowerPoint VBAの場合、Shape内の文字列を取得するには、
  Shape
   └ TextFrame
     └ TextRange
       └ Text
という階層を必ず辿る必要があります。

これに対しpythhon-pptxのShapeの場合、Shapeオブジェクトに用意されているtext属性で、いきなり図形内の文字列を取得できます。

PowerPointファイル内の文字列を抜き出すだけなら、PowerPoint VBAよりもpython-pptxを使うほうが、楽に済みそうです。Pythonを使える方なら。

enumerate()関数の初期値

enumerate()関数で、連番を簡単に作れるのもPythonの便利なところです。

『できる 仕事がはかどるPython自動処理 全部入り。』のp.205では初期値を設定していませんが、スライド番号なら0からよりも、1から表示されるほうが良さそうに感じますので、上記のSubプロシージャでは初期値1を設定しています。
  for i, sld in enumerate(prs.slides, start=1):
      print(f'-- {i} --')

最終更新日時:2019-11-09 10:17

[スポンサードリンク]

Home » Python » python-pptxの使い方 » python-pptxで文字列を抽出する

TrackBack:0

TrackBack URL

Home » Python » python-pptxの使い方 » python-pptxで文字列を抽出する

「python-pptxの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.