苦手な正規表現は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の回答
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)
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)
おわりに
最後まで読んで頂き、ありがとうございました!
今までは正規表現で文字列加工をする必要が出てきた時には、「すんなり行かないだろうな、、」と思いながら地道に組んでましたが、ChatGTPに作ってもらえば瞬時に解決するので、すごく助かりました!
おまけ
最近、ChatGPTを使用し、色々なことを模索しています。
もしよければ、以下の記事も見て頂けると嬉しいです!
この記事が気に入ったらサポートをしてみませんか?