この記事でわかること
- Power Automate for desktop(PAD)でテキストを句点(「。」)をもとに分割する方法がわかる。
PADで句点「。」ごとに文章を分割したい。
前回の記事では改行をもとにテキストを分割しました。
今回は「テキストを1文単位のチャンクに分割する。」方法について考えてみます。
今回のターゲットのテキストはこちらです(上図)。
改行が入ってないので1文ずつ分割したいです。
というわけで今回は句点(「。」)ごとにテキストを分割します!
改行によるテキストの分割方法はこちら
▲前回の記事で、テキストを改行で分割しました。リスト変数に余計な空白要素が入ってしまった時の対処方法なども紹介しています。
PADでテキストを分割するには?
今回もテキストの分割アクションを使います。
Power Automate for desktopでテキストを分割するには「テキストの分割」アクションを使います。
PADでテキストを分割する時は「テキストの分割」アクションを使います。
このアクションについては過去に一度紹介しているので下記の記事もよろしければご参考になさってください。
フローの作成手順
失敗したフロー
句点(「。」)で分割を考える場合、そのまま句点(「。」)で分割してもうまくいきません。
まず解説の都合上、ダメな例をお見せします。
▲今回ターゲットのテキストは変数に入れておきます。「変数」グループの中の「変数の設定」アクションを追加します。
パラメータ
値:下記を入力しました。
メロスは激怒した。必ず、かの邪智暴虐じゃちぼうぎゃくの王を除かなければならぬと決意した。メロスには政治がわからぬ。メロスは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。きょう未明メロスは村を出発し、野を越え山越え、十里はなれた此このシラクスの市にやって来た。メロスには父も、母も無い。女房も無い。十六の、内気な妹と二人暮しだ。この妹は、村の或る律気な一牧人を、近々、花婿はなむことして迎える事になっていた。結婚式も間近かなのである。メロスは、それゆえ、花嫁の衣裳やら祝宴の御馳走やらを買いに、はるばる市にやって来たのだ。先ず、その品々を買い集め、それから都の大路をぶらぶら歩いた。メロスには竹馬の友があった。セリヌンティウスである。今は此のシラクスの市で、石工をしている。その友を、これから訪ねてみるつもりなのだ。久しく逢わなかったのだから、訪ねて行くのが楽しみである。歩いているうちにメロスは、まちの様子を怪しく思った。ひっそりしている。もう既に日も落ちて、まちの暗いのは当りまえだが、けれども、なんだか、夜のせいばかりでは無く、市全体が、やけに寂しい。のんきなメロスも、だんだん不安になって来た。路で逢った若い衆をつかまえて、何かあったのか、二年まえに此の市に来たときは、夜でも皆が歌をうたって、まちは賑やかであった筈はずだが、と質問した。若い衆は、首を振って答えなかった。しばらく歩いて老爺ろうやに逢い、こんどはもっと、語勢を強くして質問した。老爺は答えなかった。メロスは両手で老爺のからだをゆすぶって質問を重ねた。老爺は、あたりをはばかる低声で、わずか答えた。
(「走れメロス – 太宰治」より抜粋)
▲「テキスト」グループの中の「テキストの分割」アクションを追加します。
パラメータ
- 分割するテキスト:%NewVar%
- 区切り記号の種類:カスタム
- カスタム区切り記号:。
「カスタム区切り記号」に「。」を入力してみます。
これでよさそうなのでフローを実行してみます。
▲フローを実行したら、フローデザイナーの右側の変数ペインの中の「TextList」変数をダブルクリックして開きます。
▲きちんと分割できているように見えますが文末の句点「。」が消えてしまいました。
このように区切り文字に指定した文字は消えちゃいます。
確かにCSVファイルを分割するときもカンマ「,」は消えちゃうね。
ということで、次のステップでは「。」をそのまま残すようにひと手間加えてみます。
成功したフロー
「。」が消えない対策
「。」が消えないようにする対策は下記です。
先程のフローで区切り文字が消えてしまうことを学びました。ですのでまず消えても良い適当な文字を「。」のうしろに付け足します。「。☆★」のような感じです。そしてそのあとで「☆★」を区切り文字として分割します。これによって「☆★」は消えて「。」は残ります。
▲「変数の設定」アクションと「テキストの分割」アクションの間に「テキストを置換する」アクションを挿入します。
▲パラメータを入力します。
パラメータ
- 解析するテキスト:%NewVar%
- 検索するテキスト:。
- 置き換え先のテキスト:。☆★
「。」を検索して「。☆★」に置換しています。「☆★」の部分はお好きな文字でいいです。あとでこの文字列は消えてしまいます。そのため間違ってテキストの中の必要な文字列が消えてしまわないように文章に登場しなそうな記号の組み合わせにしました。
▲一度フローを実行して「テキストを置換する」アクションの結果Replaced変数を見てみますと、上図のように句点「。」のうしろに「☆★」が付け足されたのがわかります。
あとは「☆★」で分割すればよさそうです。
▲「テキストの分割」アクションのパラメータを変更します。
パラメータ
- 分割するテキスト:%Replaced%
- 区切り記号の種類:カスタム
- 標準の区切り記号:☆★
- 正規表現である:オフ
分割するテキストは%NewVar%ではなく、%Replaced%と入力します。
▲フローが完成しました。
フローを実行してTextLIst変数の中身を見てます。「。」が消えずに残っています。成功のようです。
Robinソースコード
SET NewVar TO $''' メロスは激怒した。必ず、かの邪智暴虐じゃちぼうぎゃくの王を除かなければならぬと決意した。メロスには政治がわからぬ。メロスは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。きょう未明メロスは村を出発し、野を越え山越え、十里はなれた此このシラクスの市にやって来た。メロスには父も、母も無い。女房も無い。十六の、内気な妹と二人暮しだ。この妹は、村の或る律気な一牧人を、近々、花婿はなむことして迎える事になっていた。結婚式も間近かなのである。メロスは、それゆえ、花嫁の衣裳やら祝宴の御馳走やらを買いに、はるばる市にやって来たのだ。先ず、その品々を買い集め、それから都の大路をぶらぶら歩いた。メロスには竹馬の友があった。セリヌンティウスである。今は此のシラクスの市で、石工をしている。その友を、これから訪ねてみるつもりなのだ。久しく逢わなかったのだから、訪ねて行くのが楽しみである。歩いているうちにメロスは、まちの様子を怪しく思った。ひっそりしている。もう既に日も落ちて、まちの暗いのは当りまえだが、けれども、なんだか、夜のせいばかりでは無く、市全体が、やけに寂しい。のんきなメロスも、だんだん不安になって来た。路で逢った若い衆をつかまえて、何かあったのか、二年まえに此の市に来たときは、夜でも皆が歌をうたって、まちは賑やかであった筈はずだが、と質問した。若い衆は、首を振って答えなかった。しばらく歩いて老爺ろうやに逢い、こんどはもっと、語勢を強くして質問した。老爺は答えなかった。メロスは両手で老爺のからだをゆすぶって質問を重ねた。老爺は、あたりをはばかる低声で、わずか答えた。''' Text.Replace Text: NewVar TextToFind: $'''。''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''。☆★''' ActivateEscapeSequences: False Result=> Replaced Text.SplitText.SplitWithDelimiter Text: Replaced CustomDelimiter: $'''☆★''' IsRegEx: False Result=> TextList # [ControlRepository][PowerAutomateDesktop] { "ControlRepositorySymbols": [], "ImageRepositorySymbol": { "Name": "imgrepo", "ImportMetadata": {}, "Repository": "{\r\n \"Folders\": [],\r\n \"Images\": [],\r\n \"Version\": 1\r\n}" } }
▲今回作成したPADフローのソースコードです。ご自分のフローデザイナーにコピペするとフローを再現できるかと思います。
まとめ
PADで「テキストの分割」アクションを使って、改行ごとにテキスト分割の方法について紹介しました。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
PADの使い方まとめ記事はこちら
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。