見出し画像

苦手な正規表現はChatGPTで瞬時に解決!

文字列をどのように変換したいかのイメージはつくのですが、それを正規表現で書くとなると調べるのに時間がかかっていましたが、正規表現の書き方もChatGPTに聞けば、瞬時に解決します!これは便利!


最近、画像ファイルから文字を抽出し、その抽出したものを加工したく、正規表現が必要になってきますが、ChatGTPに教えてもらうことにしました!

以前に作成した、画像ファイルから文字を抽出する記事

文字抽出したデータを正規表現で加工する

文字抽出したデータは、ある程度加工しないとデータとして扱いづらいので正規表現で加工することに

文字抽出したデータは以下のようなイメージで、ある程度加工しないと、データとして扱いづらい状態なので、正規表現で加工することにしました(ChatGPTに正規表現のコードを作ってもらうことにしました)

請 求 書

サンプル株式会社 御中                                                  No            1001

請求日         2022/4/30

下記のとおり、御請求申し上げます。                        サンプル株式会社
件名     サンプルプロジェクト                        〒100-000
支払期限 02747|                                                    東京都千代田区千代田1-1-1
あん       サンプル銀行 本店 普通 1111111                          サンプルビル3階
サンプル (カ                                       TEL : 03-0000-0000

担当: サンプル太郎
154,000 円 (税込)

摘要                                          EE         単位            単価                  金額





サンプル1                                            1|10,000        10,000
サンプル2                                            1| 式          10,000        10,000
サンプル3                                            1|10,000        10,000
サンプル4                                            1| 式          10,000        10,000
サンプル5                                            1|10,000        10,000
サンプル6                                            1| 式          10,000        10,000
サンプル7                                            1|10,000        10,000
サンプル8                                            1| 式          10,000        10,000
サンプル9                                            1|10,000        10,000

文字抽出したデータには、改行や複数のスペースなどが混在している状態

1文字ずつ文字コードを確認すると、改行や半角スペースが至る所にある感じでした。

154,000 円 (税込)[改行]
[改行]
摘要[space][space…]EE[space…]単位[space…]単価[space…]金額[space…][改行]
[改行]
[改行]
[space][space…][改行]
[space][space…][改行]
[space][space…][改行]

上記のパターンを元に、正規表現での加工処理をChatGPTにつくってもらう

上記で整理したパターンを元に、加工処理を考えながら正規表現をChatGTPに作ってもらいます!

ChatGPTで正規表現の書き方を聞いてみる

1-1. 複数個の半角スペースが続いた場合、ひとつの半角スペースに置換する

変更前

摘要[space][space…]EE[space…]単位[space…]単価[space…]金額[space…][改行]

変更後

摘要[space]EE[space]単位[space]単価[space]金額[space][改行]

1-2. プロンプト

複数個の半角スペースが続いた場合、ひとつの半角スペースに置換する

processed_string = re.sub(r'\s+', ' ', original_string)

1-3. ChatGPTの回答

このコードでは、re.sub()関数を使用して、正規表現パターン \s+ にマッチする複数の連続した空白文字(スペース、タブ、改行など)を、ひとつの空白文字に置換しています。r'\s+' は、空白文字が1回以上繰り返されるパターンを表します。

2-1. 半角スペースが改行コードに挟まれている場合、半角スペースを除去する

変更前

154,000 円 (税込)[改行]
[改行]
摘要[space]EE[space]単位[space]単価[space]金額[space][改行]
[改行]
[改行]
[space][改行]
[space][改行]
[space][改行]

変更後

154,000 円 (税込)[改行]
[改行]
摘要[space]EE[space]単位[space]単価[space]金額[space][改行]
[改行]
[改行]
[改行]
[改行]
[改行]

2-2. プロンプト

半角スペースが改行コードに挟まれている場合、半角スペースを除去する

2-3. ChatGPTの回答

import re

# 半角スペースが改行コードに挟まれている場合、そのスペースを除去する
text = re.sub(r' *\n+ *', '\n', text)

このコードでは、正規表現パターン ' *\n+ *' に一致する部分(つまり、改行コードに挟まれた任意の数の半角スペース)を、単一の改行文字 '\n' に置換しています。これにより、改行コードに挟まれた半角スペースが除去されます。

3-1. 改行コードが複数続く場合に、改行コードを一つに置換する

変更前

154,000 円 (税込)[改行]
[改行]
摘要[space]EE[space]単位[space]単価[space]金額[space][改行]
[改行]
[改行]
[改行]
[改行]
[改行]

変更後

154,000 円 (税込)[改行]
摘要[space]EE[space]単位[space]単価[space]金額[space][改行]

3-2. プロンプト

改行コードが複数続く場合に、改行コードを一つに置換する

3-3. ChatGPTの回答

import re

# テキスト内の連続した改行文字を一つの改行文字に置換する
text = re.sub(r'\n+', '\n', text)

このコードでは、re.sub()関数を使用して、正規表現パターン '\n+' に一致する部分(つまり、連続した改行文字)を、単一の改行文字 '\n' に置換しています。これにより、複数の連続した改行文字が一つの改行文字に置換されます。

おわりに

最後まで読んで頂き、ありがとうございました!

今までは正規表現で文字列加工をする必要が出てきた時には、「すんなり行かないだろうな、、」と思いながら地道に組んでましたが、ChatGTPに作ってもらえば瞬時に解決するので、すごく助かりました!

おまけ

最近、ChatGPTを使用し、色々なことを模索しています。
もしよければ、以下の記事も見て頂けると嬉しいです!




この記事が参加している募集

AIとやってみた

この記事が気に入ったらサポートをしてみませんか?