LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

IQ Botのカスタムロジック:スプリット(口座情報から銀行名や支店名だけを取り出す)

OCRの読み取り結果(field_value)が「あいうえ銀行かきくけ支店普通1234567」だった場合に、
ここから銀行名と支店名をそれぞれ別の項目として分けて出力したい、という場合はどうすればいいでしょうか?

そんなときに使えるのが、スプリットです。

やりかた(チートシート)

答えを先に言ってしまうと、field_valueが「あいうえ銀行かきくけ支店普通1234567」の場合に、
銀行名だけを取り出す処理は以下のとおりです。

スプリットを使って銀行名を取り出す
#銀行名を取り出す
field_value = field_value.split("銀行")[0]

こんなかんじ↓で、「あいうえ」が取り出せたのがわかります。

銀行名の取り出し.jpg

また、同じくfield_valueが「あいうえ銀行かきくけ支店普通12345678」の場合に、
支店名だけを取り出す処理は以下のとおりです。

スプリットを使って支店名を取り出す
#銀行の支店名を取り出す
field_value = field_value.split("銀行")[1]
field_value = field_value.split("支店")[0]

こんなかんじ↓で、「かきくけ」が取り出せたのがわかります。

支店名の取り出し.jpg

仕組みの説明

上記の処理をすると、なぜ銀行名や支店名が取り出せるのかの説明です。

わかる人は読み飛ばしてください。

スプリット

スプリットは、「文字列をある区切り文字で区切って、リストにする」という処理です。

……うっ……急にハードルが上がったぞ……と思った方は、文系初心者でもわかるsplitの説明をご参照ください。

pythonにおけるスプリットの処理は、処理対象.split(区切り文字) の要領で行うことができます。

field_value.split("銀行")という処理は、
field_value"銀行"という文字で区切ってリストにしてね」という意味です。

この処理をやると、以下のようなリストが取り出せます。
["あいうえ","かきくけ支店普通1234567"]

上記は2つの要素を持つリストで、
1番目の要素が"あいうえ"、2番目の要素が"かきくけ支店普通1234567"です。

リストの中身を取り出す

上記の処理で、晴れて文字列を「リスト」にしたわけですが、
今度はそのリストから要素を取り出す処理です。

リスト[インデックス] の要領で、これができます。

「インデックス」はざっくり言えば、リストの何番目にその要素が入っているかを示す番号なのですが、開始はゼロからになるというのがちょっとした注意点です。

改めて、銀行名を取り出す処理を見てみましょう

今までの話を踏まえて、改めて銀行名を取り出す処理を見てみましょう。

スプリットを使って銀行名を取り出す
#銀行名を取り出す
field_value = field_value.split("銀行")[0]

これはつまり、「field_valueの中身を"銀行"という文字で区切ってリストにしてね。そしてそのリストの1番目の要素(=インデックスはゼロ!)を取り出して、そいつをfield_valueに入れてね」

field_valueの中身を"銀行"という文字で区切ってリストにしてね。」がfield_value.split("銀行")

「そしてそのリストの1番目の要素(=インデックスはゼロ!)を取り出して」が[0]

「そいつをfield_valueに入れてね」がfield_value =に、

それぞれ該当します。

改めて、支店名を取り出す処理を見てみましょう

ここまで押さえらえれていれば、支店名の処理もすぐに理解ができると思います。

スプリットを使って支店名を取り出す
#銀行の支店名を取り出す
field_value = field_value.split("銀行")[1]
field_value = field_value.split("支店")[0]

1行目は、「field_valueの中身を"銀行"という文字で区切ってリストにしてね。そしてそのリストの2番目の要素(=インデックスは1!)を取り出して、そいつをfield_valueに入れてね」という意味です。

なので、この時点でfield_valueの中身は"かきくけ支店普通1234567"になっています。

そのfield_valueに対して、2行目では、

field_valueの中身を"支店"という文字で区切ってリストにしてね。そしてそのリストの1番目の要素(=インデックスはゼロ!)を取り出して、そいつをfield_valueに入れてね」

という処理を行っています。

field_valueの中身を"支店"という文字で区切ってリストにしてね」の時点で、

["かきくけ","普通1234567"] というリストができているので、

こいつの1番目の要素を取り出すことで、「かきくけ」という支店名が取り出せたというわけです!

エラー制御や、テーブルに適用するときは?

上記の説明を見て、以下も知りたい! と思った方は、こちらの記事をご参照ください。

  • 「銀行」や「支店」といった文字が含まれていなかったらどうなる? (エラー制御)
  • テーブル項目にSplitをかけたいときはどうする?

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1