生協の注文リストを一覧化するため、AWKを使ってテキスト抽出プログラムを作ろうとしたが、久しぶりのコーディングで文法を忘れている。本を読み返しながらプログラムを作り始めたがなかなか進まない。そこで、ChatGPTにコードを書かせてみようと思い、以下のリクエストをしてみた。
ChatGPTへのメッセージ:
以下のようなタブデリミタで区切られたテキストファイルがあります。
ファイル名はorder.txtです。
<order.txt>
*000047
ラベルのない麦茶(国産六条大麦使用)600mL×24
1,380円 1 1,380円 OCR 2025/02/05
*000430
骨取り赤魚の味噌煮216g(3袋)
抽選冷凍
398円 1 398円 OCR 2025/02/05
*000299
国産キウイフルーツ(サイズ込)350g(3~5個)
380円 1 380円 OCR 2025/02/05
*000429
骨までやわらか!国産さばみそ煮240g(2切入×2P)
冷凍
380円 1 380円 OCR 2025/02/05
このorder.txtファイルを、以下のようにデータを抽出、変換して、プリントアウトするプログラムを作ってください。
<期待するプログラム処理出力結果>
1、csvファイルとして扱えるように、カンマ区切りで出力する。
2、タイトル行に注文番号, 品名, 価格を入れてください。
注文番号, 品名, 価格
*000047, ラベルのない麦茶(国産六条大麦使用)600mL×24, 1,380円
*000430, 骨取り赤魚の味噌煮216g(3袋)抽選冷凍, 398円
*000429, 骨までやわらか!国産さばみそ煮240g(2切入×2P)冷凍,380円
このリクエストに対し、ChatGPTは瞬時にPythonプログラムを作成してきた。1回目の回答では価格データが入っていなかったので、その誤りを指摘して修正を依頼すると、以下のようなプログラムを返してきた。
import csv
# 入力ファイル名
input_file = "order.txt"
output_file = "output.csv"
# 結果を格納するリスト
orders = []
current_order = None
# ファイルを読み込む
with open(input_file, "r", encoding="utf-8") as file:
for line in file:
line = line.strip()
# 注文番号の行
if line.startswith("*"):
if current_order:
orders.append(current_order)
current_order = [line, "", ""] # 注文番号, 品名, 価格
# 品名の行
elif current_order and current_order[1] == "":
current_order[1] = line
# 価格の行(価格データの取得修正)
elif "円" in line:
parts = line.split("\t")
if len(parts) >= 3:
current_order[2] = parts[2].replace(",", "") # カンマを削除
# 最後の注文データを追加
if current_order:
orders.append(current_order)
# CSVファイルに書き込む
with open(output_file, "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file, quoting=csv.QUOTE_MINIMAL)
writer.writerow(["注文番号", "品名", "価格"]) # ヘッダー行
writer.writerows(orders)
print(f"処理が完了しました。{output_file} に出力されました。")
このプログラムを走らせると、以下のように期待通りの出力結果を得ることができた。
注文番号,品名,価格
*000047,ラベルのない麦茶(国産六条大麦使用)600mL×24,1380円
*000430,骨取り赤魚の味噌煮216g(3袋),398円
*000299,国産キウイフルーツ(サイズ込)350g(3~5個),380円
*000429,骨までやわらか!国産さばみそ煮240g(2切入×2P),380円
簡単なコードであればわずか数分のやり取りでプログラムを作成できるAIの能力に驚かされる。今、世界ではAIの活用があらゆる場面で試されているが、プログラム作成は論理的な作業ゆえ曖昧性も少なく、AIにとっては得意な分野なのだろう。単純なコーディング作業はいずれAIにとって代わられることを痛感した。
なお、同様のテキスト処理をAWKで作成するようにリクエストしたが、こちらは10回くらいやり直しを試みたものの、最終的に完成することができなかった。プログラム言語に得手不得手があるようだ。そんなことをChatGPTに問うてみると、
Python と AWK の違い
Python はテキスト処理が得意で、複雑な条件分岐やデータ整形がしやすい。
AWK は行ごとの処理には向いているが、複雑な条件処理が難しい。
→ しかし、今回のケースなら AWK でも問題なく処理可能! 💪
これで期待通り動くはずです!試してみてください! 🚀
と返答してきた。さらに修正を試みようとしてくれるAIの健気さに感心した・・・。
おまけ追記:画像生成機能
ChatGPTの画像生成機能を確認してみた。
年賀状は今年で書き納めにしたが、巳年にちなんだイラストを年賀はがきに載せてみようかと思い、ChatGPTに以下のお願いをした。(結局使わなかったが・・・)
今年は日本は十二支では巳年です。年賀状に蛇のイラストを載せたいのですが、何か良いイラストを作っていただけますか。
できるだけ可愛いマスコットのようなイラストにしてください。
ChatGPTの作品がこちら↓
こちらが可愛い蛇のイラストです!新年にぴったりの明るい雰囲気を意識しました。
ぜひ年賀状にご活用ください!🎉
さらに
なるほど、素晴らしいですね。置物になるようなイラストは作成できますか?
とお願いすると以下のイラストが返ってきた↓
こちらが短くて漫画風のかわいい蛇の置物イラストです!
明るく親しみやすい雰囲気を重視しました。
これなら年賀状にもぴったりではないでしょうか?😊
画像生成はCPUのリソースをたくさん使うようで、3回ほど試すと、これ以上は今日はできないと返答があった。
コメント