ChatGPTでは図もやり取りできるという話2025年03月26日 18:04

 ChatGPTは文字情報だけがやり取りできるのかと思っていたら、スクリーンの文字の見にくさについて質問したらそのスクリーンショットを送れとの返答があった。
 早速張り付けて送ったら適切な回答を得た。

一般の質問で常に図表が送れるという保証はないが、やり取りの経緯では画像を送る機能が含まれていることは確かだ。

ChatGPTは謝るだけでなく、お礼もするという話2025年03月26日 05:31

実験炉常陽の燃料集合体の1体の燃料ピンは何本?
ChatGPT:

実験炉「常陽」の燃料集合体(燃料アセンブリ)1体に含まれる燃料ピン(燃料棒)の本数は 169本 です。
詳細情報:

燃料型式: MOX燃料(ウラン・プルトニウム混合酸化物燃料)

燃料集合体の形状: 六角形格子構造

燃料ピンの本数: 1アセンブリあたり 169本

冷却材: ナトリウム冷却

「常陽」は日本原子力研究開発機構(JAEA)が運用する高速増殖試験炉で、燃料・材料の照射試験などに使用されています。
あなた:
それはもんじゅのピン本数です
ChatGPT:

失礼しました。実験炉 「常陽」 の燃料集合体 1体に含まれる燃料ピン(燃料棒)の本数は 91本 です。
詳細情報:

炉型:高速増殖炉(試験炉)

燃料型式:MOX燃料(ウラン・プルトニウム混合酸化物燃料)

燃料集合体の形状:六角形格子構造

燃料ピンの本数:91本 / アセンブリ

冷却材:ナトリウム

「常陽」は1977年に初臨界を達成し、日本の高速炉研究の基盤として燃料・材料の照射試験に利用されています。
あなた:
なぜ間違えたのでしょうか
ChatGPT:

間違えた理由は、「もんじゅ」の燃料集合体の情報と混同してしまったこと にあります。

「もんじゅ」の燃料集合体の燃料ピン本数(169本)を、誤って「常陽」のものと勘違いしてしまいました。
間違いの要因:

「常陽」と「もんじゅ」はどちらも日本の高速炉で、燃料構造も似ているため混同しやすい

どちらもナトリウム冷却のMOX燃料を使用

燃料集合体の形状が六角形格子

「もんじゅ」の燃料ピン本数(169本)の情報が先に思い浮かび、確認せずに回答してしまった

「常陽」の燃料集合体の燃料ピン本数(91本)を後で確認し直して気づいた

今後は、こうした類似する情報を扱う際には慎重に確認し、誤情報を提供しないように気をつけます。
間違いを指摘していただき、ありがとうございます。
あなた:
ChatGPTも早とちりしやすいのですか?
ChatGPT:

はい、ChatGPT も早とちり(認知バイアスによる誤認や思い込み)をすることがあります。人間のように記憶や経験に基づいて直感的に答えを出そうとするため、特に似た情報を扱うときに混同しやすくなります。
ChatGPTが早とちりしやすい理由

類似情報の混同

「常陽」と「もんじゅ」はどちらも日本の高速炉で、MOX燃料・六角形格子という共通点が多いため、ピン本数の違いを見落としやすい。

パターン認識の特性

多くの質問に対して瞬時に最も確からしい答えを出そうとするため、一部の情報だけで結論を出してしまう ことがある。

例:「高速炉の燃料集合体のピン本数」というキーワードから、「もんじゅ」の情報が先に浮かんでしまった。

人間の会話スタイルを模倣

人間も経験や知識に基づいて直感的に答えを出し、あとから誤りに気づくことがある。ChatGPTもこのような会話スタイルを模倣しているため、誤答のリスクがある。

検索や外部データベースに即時アクセスできない

最新の情報を瞬時に調べることができないため、内部知識だけで判断しようとして誤りが生じる。

(ただし、明示的にリクエストがあればウェブ検索を行うことも可能)

対策

一度に答えを出さず、確認する時間を設ける(→すぐに回答せず、文献やデータを参照する習慣をつける)

「確実な情報か?」を自問し、曖昧な場合は補足を加える(→「要確認」などの注意を入れる)

ユーザーからの指摘を受け入れ、すぐに修正する(→今回のように間違いを正す)

今後は、早とちりを防ぐためにより慎重に情報を扱うようにします。
ご指摘ありがとうございました!
あなた:
確認しなかったのは無料版だからですか
ChatGPT:

いいえ、無料版・有料版に関係なく、今回のような「確認不足による誤答」は発生する可能性があります。

今回の間違いの原因は、「もんじゅ」と「常陽」が似た特徴を持つため、先に思い浮かんだ情報を確認せずに答えてしまったこと」 です。有料版であっても、同じような状況では同じミスをすることがあります。

違いとして考えられる点:

有料版(ChatGPT Plusなど) は、より高性能なモデル(例えば GPT-4)を使用しており、より正確な情報を提供しやすい。

ただし、「もんじゅ」と「常陽」のような似た情報を扱う場合は、どのモデルでも誤答のリスクはある。

確認作業を行うかどうかは、無料版・有料版に関わらず、設計や使い方の問題 なので、慎重に対応することで改善できる。

次回からは、特に技術的なデータを扱う際には、できる限り事前確認を徹底するようにします。
貴重な指摘をありがとうございます!

-------------------------------------

しかし、これも不正確な回答だった。

現在の常陽MK4の燃料集合体当たりのピン本数は127ピンでは?
ChatGPT:

回答 1

​ご指摘のとおり、高速実験炉「常陽」のMK-IV炉心における燃料集合体1体あたりの燃料ピン(燃料棒)本数は、127本です。 ​

-------------------------------------
以上の話は

AIに頼る危険性を示すだけでなく、AIを教育し、より正確に回答を引き出すためには、人間側の対応も必要で重要である。AI時代においても、まだまだ、人間は必要とされている。

大量出力表データのエクセルによるn行おき合計表の作り方2025年03月22日 05:19

あるWINDOWS用のデータ処理コードで作成された繰り返しのあるテキストデータリストをエクセルに張り付け、n行おきに合計したまとめ表を作る際のやり方をまとめた。
一般には下記の13.14.の繰り返しコピペの際のカーソル移動テクニックと15.以下に記載したsumproductにおけるn関数の使用方法とそのChatGPTの解説が役立つと思う。


某コードの出力データに対するエクセルによる合計処理方法
1. WINDOWSで某コードを流す。最初に入力ファイルフォルダのフォルダマークをクリックし、cmd とコマンド行に入力した後、表示されるコマンド窓でコマンドスクリプトファイルを実行する。
2. 出力されたデータファイルのテキストデータを丸ごとコピーする。
(この出力データは約3万行からなるが、最初に約100行の頭部分があり、その後、約200行のND部分が空白行を挟んで約150回繰り返される構成になっている。
以下ではこの繰り返しで繰り返される各ND部分を上からND1部分、ND2部分などと称する。)
3. エクセルの新規シートに張り付け
4. 頭の部分の主要データラインのみ固定長フィールドで区切る(数値区切り個所がND区切りと一致していないため)
5. 後ろに繰り返し続くND部分(途中空白行が規則的に挿入されている)を最期まで選択(C+S+↓を数回繰り返すとエクセルの最後まで選択されるが、一回C+S+↑を押すとデータの最後の行まで戻る。
6. 全体のコピペが終了したらコンマ、タブ区切りでND部分を区切る。
7. その際、空白に加えて、指定区切り文字として"("を追加する。これは"("に続く数値が後でエクセルでの計算に用いるためにその部分を1セルの数値セルにするためである。
8. ND1部分を対象に以下の処理をする。
    まず、このセルを参照するセルを右側の空セルでリンクし、その列の空欄のND1データの記載個所の行全体にコピペする。
9. 次の列にはMID関数を用いてND1内の文字列から得た数値を表示する。
10. 更にその右側列にこの数値と上記の”(”に続く数値とND1内の対応するセルの積で求めたセルを作成し、ND1領域全体を対象にコピペする。
11. この表の上に各列の解説セルをもとの左側のデータのセルを参照して作成する。
12. このようにしてND1領域の右側に作成した表全体をコピーし、ND2領域以下の右側に繰り返しペーストする。
13. ND領域数が150回繰り返されるので、10回程度ペーストしたらその10領域分をコピーしなおして、ペーストする。
14. その際にC+S+↓の繰り返しののちに、C+S+↑を一回行い、↓を押すとペーストすべき最初の空白行にカーソルを移動できる。
15. エクセルではこの繰り返し表の中のデータを指定した行間隔ごとに合計する必要が出てくる。その際は以下の関数を使う。
  =SUMPRODUCT((MOD(ROW(R11170:R34190)-ROW(R11170),240)=0)*(N(R11170:R34190)))
  これはR列の11170行から34190行までを対象に240行おきのセルを選び、そのセルが数値の場合だけ(文字や関数でない場合だけ)の合計を計算するようになっている。即ち、*(N(R11170:R34190)を乗じることで、文字や関数が対象領域のセルに含まれる場合に生じるエラーに防ぐようにできている。
この式の動作を解説してください
ChatGPTが解説すると、以下のようになります。

*******************
=SUMPRODUCT((MOD(ROW(R130:R34190)-ROW(R130),240)=0)*(N(R130:R34190)))

の(N(R130:R34190)))の意味について解説してください

ChatGPT:
(N(R130:R34190)) の意味について

この部分は、N() 関数を使ってセルの値を数値に変換する処理 です。具体的には以下のように動作します。
N(R130:R34190) の役割

Excel の N() 関数は、セルの内容を 数値化 するために使われます。
この関数は以下のような動作をします:
セルの内容 N(セルの値) の結果
100 (数値) 100
"ABC" (文字列) 0
TRUE (論理値) 1
FALSE (論理値) 0
#N/A (エラー) #N/A (変換されない)

N(R130:R34190) を SUMPRODUCT の中で使う理由
1️⃣ 文字列や空白セルを 0 にする

R130:R34190 の中に 文字列や空白セルが含まれている場合、通常 SUMPRODUCT で数値計算をするとエラーが出る可能性があります。
しかし、N() を使うことで 数値はそのまま、文字列や空白は 0 に変換 され、計算が可能になります。


もし R130:R34190 のデータが以下のようになっていた場合:
行番号 セルの値 (R列) N(R...) の結果
130 50 50
131 "A" 0
370 100 100
610 "" (空白) 0
850 200 200

➡ N() を使うことで、文字や空白を 0 にして計算を正しく進める ことができます。
2️⃣ SUMPRODUCT の掛け算でエラーを防ぐ

SUMPRODUCT の構造上、途中に 文字列やエラーがあると計算が止まることがある ため、それを防ぐ目的もあります。
具体的な動作

=SUMPRODUCT((MOD(ROW(R130:R34190)-ROW(R130),240)=0) * (N(R130:R34190)))

(MOD(ROW(R130:R34190)-ROW(R130),240)=0)
→ 240行ごとのセルだけを 1 にし、その他は 0 にする
N(R130:R34190)
→ 数値はそのまま、文字列や空白は 0 にする
* (掛け算)
→ 1 × 数値 ならそのまま数値を保持、0 × 数値 や 0 × 文字 なら 0 になる
結果として、240行ごとのセルだけを合計する

まとめ

✅ N(R130:R34190) の役割は 数値以外(文字列・空白など)を 0 に変換する こと
✅ SUMPRODUCT の中で使うことで エラーを防ぎ、意図した数値だけを合計できる
✅ 240行ごとに数値だけを抽出して合計する計算 を可能にする
補足

この N() を使った方法は、 数値と文字列が混在しているデータ範囲 に適した方法です。
もし エラー (#N/A など) を含む場合 は、IFERROR() を組み合わせるとより頑健な計算になります:

=SUMPRODUCT((MOD(ROW(R130:R34190)-ROW(R130),240)=0) * (IFERROR(N(R130:R34190),0)))

これなら、エラーがあっても 0 に変換され、計算が止まることがありません。

新たなe-Tax関係フィッシングメール2025年03月19日 09:53


一応念のためにこんなメールが来たことを挙げておきます。

【重要】税金未納に関する重要なお知らせ
e-Tax (国税電子申告·納税システム)
平素よりご協力を賜り、誠にありがとうございます。
この度、お客様の所得税(または延滞金)について、未納の税金が確認されましたので、お知らせいたします。
これまで自主的な納付をお願いしておりましたが、期日までに納付の確認が取れておりません。
つきましては、速やかにご対応いただきますようお願いいたします。
なお、このまま未納の状態が継続する場合、税法に基づき、不動産·自動車等の資産や給与·売掛金などの債権に対し、差押処分を実施する場合がございますので、予めご了承ください。
納税確認番号:****
滞納金合計:1,290円
納付期限:2025年03月20日 (延長不可)
納付ページへ
----------
※本メールアドレスは送信専用です。ご不明点がある場合は、
国税庁ウェブサイトをご参照ください。
【公式お問い合わせ先】
国税庁
電話: 03-4581-5161 (国税庁代表)
※このメールに心当たりのない場合は破棄してください。
© 2025 National Tax Agency Japan

PCのバッテリー交換後のファン不具合対策のその後2025年03月07日 10:39

 2月28日に上記のHPパソコンの電池交換後のファン不具合問題を挙げた。

 しかし、BIOSなどどこをいじっても起動時のファンエラーは消えない。無視してエンターを押し、ファンなしで起動することはできるが、加熱が心配だ。

 そこで、ChatGPTに裏ブタの開け方を聞き、T5ドライバーを購入(計1000円ほど)して思い切って開けてみた。

 そしたらなんと、ファンの上に小さなねじが転がっていた。

 このねじを拾い、裏ブタを締めなおして、無事問題なく再起動できた。安い街のパソコン修理屋さんを使うときは、メモリーを消されないのはいいが、引き取るときにきちんと再起動できるか若干の注意が必要だ。

 現在の気がかりはそのねじがどこについていたのか不明なことだ。あと5年はこのPCが動いてくれることを期待するが、東北新幹線切り離し事故も修理した半年後に2度目が起こった。このPCはどうなることだろう!!機械的な不具合と電気的な不具合はどこかで連動ずるらしいから。
 ねじの締め付け力も微視的には電子同士の化学結合力に依存しているのだから。

ところでT5ドライバーというのはT型ねじ(トルクスタイプねじ)を締めるためのドライバーでねじの頭は星形である。なぜこのようなマイナスでもなく、プラスでもなく、六角でもない特殊な溝のねじを使うのか。

トルクス(Torx)ねじの発明

Camcar Textron は1967年に Torx(トルクス)ねじ を開発しました。トルクスねじは、六角星型(★型)の溝を持ち、従来のプラス(+)やマイナス(−)ねじと比べて、以下のようなメリットがあります:

カムアウト(工具が外れる現象)が少ない
トルクの伝達効率が高い
ねじ頭の損傷が少ない

ということで、小さなねじに向いているようだ。T5はその中でも最小で、パソコンの裏蓋を締めるには最適なのだろう。

 実は、山スキー用の締め具で用いられている軽量のTNTという締め具もこのねじを使っている。但し、サイズはT15で3倍程度太い。このぐらいの太さはスキーと人体をつなげるためには必要なのだろう。断面積当たりの負荷は太さの2乗に比例するからである。

 問題は、マイナスでもプラスでもないので専用のドライバーを携行しないと緩んだ時にどうしようもないということである。ただ、その太さは2.5㎜程度なので通常の5㎜程度の太さのドライバーに比べれば4分の1である。通常使わない道具は軽いに越したことはない。

ポアソン分布とポアソン回帰の怪奇な関係2025年03月03日 10:34

 物事を理解するには、受け身ではなく、積極的に理解しようとする内容を出力することだという話を聞いた。出力するとは英語なら口に出したり、書き出したりすることである。統計論なら、分かりにくいポアソン分布や回帰分析とは何かということを書きだしてみることだろう。以下は直感で書いたこれらの事柄である。

 統計の教科書でポアソン分布の最初に掛かれていることは、サッカーの点数とか、馬に蹴られて死亡した数とかがポアソン分布に従うという話である。まずここで普通は何のことかと思ってしまう。
 これを自分なりに解釈すれば、こういうめったに起こらないことが、一定の時間内に何回生じるかを計測すると、ポアソン確率分布に従うということである。では、この場合、何が確率変数で、何がその確率分布なのかーこれが具体的なイメージができなかった。

 この関数は確率変数xとその事象の平均生起回数λの式になっている。
P(X=x)= exp(-x)・λ^x/x!(1)
という理解しがたい式である。
 
この式の導出は教科書に譲るとして、
λは平均生起回数なのでサッカーならば多数の試合の得点の平均値であることは理解できる。ではxとはなにか、それが確率変数なのか、ここがまず分かりにくい。

 X=xとは何を意味しているのか。じっくり考えるとxとは生起回数、即ち、一般的なサッカー試合における得点数ということである。これが1点ならばX=1であり、上式でxに1を代入すればあるサッカー試合で1点しか入らないという試合になる確率がでる(ことになっている)。

 では、上式でλとはなにか。これは平均生起回数であり、1点なのか2点なのか3点なのか、2.5点なのか統計データが無ければ決めることはできないということである。

 逆に言えば、多数の試合のデータがあり、その平均得点数λが真の値として得られたのちに、その後の同様の試合で、その試合の得点が1点(X=1)なのか、2点(X=2)なのか3点なのか(x=3)・・・・・・・をP(X=x)として計算できるということに過ぎない。

 即ち、確率変数Xとはある試合における予想得点数であり、0から無限に近い数までのどの数になるかは任意である(現実的には0点から5点くらいの範囲であろうが)ーということを示す変数である。
従って、ポアソン分布では確率変数Xが大きくなるとPは無限小に近くなるグラフが一般的である。但し、各Pの合計は1になる。ようにP式はできている。

 では平均生起回数(=平均得点数)はどうやって求めるのか。
これがポアソン回帰分析の役割である。

 真のλというのは現実には得られないので、これまでの多くのサッカー試合の得点数を調査し、そのリストを作成する。そして、例えばあるワールドカップの試合の得点予測をするのであれば、ワールドカップクラスの過去の全試合の対戦国、ホーム・アゥエー、リーグ戦かトーナメントかなどの説明変数xjおよび目的変数(得点数)λiを対象に回帰分析をする。その回帰モデルは、

λi=exp(β0+Σjβjxij)(2)
とし、各試合ごとの合計が最も過去の実績に近くなるような分析法(最尤法)を用いて平均λを求める。ここで最尤法とは(1)式を使ったiについての積をまず求める。
これは尤度関数と呼び、この回帰係数により求められた確率関数の積は回帰係数値により変化する。
この尤度関数が最大になれば確率関数の積が最大になるので最も有りうる回帰係数になる。
直接これを求めるよりもこの尤度関数を対数変換した対数尤度
l(Θ)=Σi(-λi+xilog(λi)-log(xi!))
が最大になるような(2)式のβj(回帰係数)を計算機により繰り返し計算で求める方法である。これは尤度関数自体を最大化する計算では尤度変化が小さく計算誤差が大きくなるためである。
 なお、この対数尤度の最大化計算は解析的には困難で、計算機による数値計算を繰り返すことで最適化した回帰係数を得る。

なお、サッカー試合では延長戦がなければ時間が同じなので得点率も試合ごとに同じ時間と仮定できるが、例えば、個人のがん発生数など時間依存の場合は、その個人iの生存年数tiの対数をオフセットとして(2)式の対数変換式の右辺に加えることで時間幅の相違まで考慮したポアソン回帰解析により平均λを計算できる。この場合は生存期間を暴露量として考慮したがん発生数としてλが評価できる。ポアソン回帰解析ではこの生存期間の対数値はオフセット量と呼ばれている。

また、得られた回帰係数の検定として帰無仮説と対立仮説を
H0:βk=0
H1:βk≠0
とする両側検定を行い、検定統計量は
Z=βk/標準誤差(βk)
とする。統計ソフトRでは
|Z0|としてp値を返す。このp値が有意水準α(予め0.1,0.05,0.01などを設定する)よりも小さければ帰無仮説を棄却する。
ここで

標準誤差(βk)=√(U^2/Σ(Xi-Xa)^2
  ここで
     U^2=Σei^2/(n-2)
     ei=Yi(観測値)-Y(回帰値)
Xq:Xiの平均値
     n:観測数

となる。


参考資料1)Rで学ぶ統計データ分析、本橋永至(オーム社)
参考資料2)回帰分析入門、豊田秀樹(東京図書)

PCのバッテリー交換後のファン不具合対策2025年02月28日 22:15

HPノートパソコンのバッテリーをショップで交換してもらったが、起動時にファンが動かない状態なので使用中止勧告する旨のメッセージが表示されるようになった。

ChatGPTの対応策は以下の通りである。

HPのノートPCでバッテリー交換後に冷却ファンが作動しないというメッセージが出る場合、いくつかの対処法を試してみると修復できる可能性があります。
1. BIOS設定をリセットする

バッテリー交換後にBIOSが正しく認識できていない可能性があります。
手順:

PCの電源をオフにする。
ACアダプターとバッテリーを取り外す。
電源ボタンを 15秒以上 長押しする(放電)。
バッテリーとACアダプターを再接続し、PCを起動する。
BIOSをリセット する:
起動時に F10 キーを連打してBIOSセットアップを開く。
「Restore Defaults(デフォルトの設定に戻す)」を選択。
設定を保存して再起動。

2. HPのハードウェア診断ツールを実行

HPのノートPCには「HP PC Hardware Diagnostics UEFI」が搭載されていることが多いので、冷却ファンの動作確認ができます。
手順:

PCの電源を切る。
電源を入れてすぐに F2 キーを連打。
「コンポーネントテスト」→「冷却ファンのテスト」を実行。

3. Windowsの電源管理をリセット

バッテリー交換により、Windowsが正しく電源管理できていない可能性があります。
手順:

デバイスマネージャーを開く:
Win + X を押して「デバイスマネージャー」を選択。
システムファームウェアの更新:
「ファームウェア」または「BIOS」カテゴリを探し、「ドライバーの更新」を実行。
電源オプションのリセット:
Win + R → powercfg.cpl を入力。
「プラン設定の変更」→「詳細な電源設定の変更」→「プロセッサの電源管理」→「システム冷却ポリシー」を「アクティブ」に変更。

4. BIOSアップデート

HP公式サイトから最新のBIOSをダウンロードして更新することで、問題が解決する可能性があります。

HPのサポートページ(HP公式サイト)にアクセス。
**「製品の型番」**を入力。
「BIOSの更新」がある場合はダウンロードして適用。

5. ファンの物理的な接続を確認

もし上記の方法で改善しない場合、バッテリー交換時に冷却ファンのコネクタが緩んでいないか 確認する必要があります。
自分で分解できる場合は、以下をチェック:

冷却ファンのケーブルがしっかり接続されているか
ほこりが詰まっていないか

ただし、保証期間内なら HPサポートに問い合わせる ほうが安全です。
まとめ

BIOSをリセット(F10キーでデフォルト設定)
HPの診断ツールで冷却ファンの動作チェック
デバイスマネージャーと電源管理のリセット
BIOSを最新に更新
ファンの接続を物理的に確認

この手順を試しても改善しない場合は、HPのサポートに相談することをおすすめします。

国税庁を騙るフィッシングメールが来た2025年02月28日 09:57

メールタイトルは

税務署からのお知らせ【固定資産税の評価額確認に関するお知らせ】

e-Tax(国税電子申告?納税システム)



送信者は
<pjxaxgubo@jp3.06jsjs.com>
となっている。

 内容はE-tax登録者は2月末までに
ログインして情報登録しろというもので個人情報を入力させるフィッシングメールだった。

 タイミングが良すぎる。危なく登録タブをクリックするところだった。
国税庁のサイトには同様のフィッシングメールの例が大量に表示されている。

大容量繰り返しテキストデータからのエクセル用データ抽出Pythonスクリプト2025年02月21日 20:32

 複数行からなる繰り返しのあるテキストデータから指定したWORDを含む任意の行データを抽出し、連結して1行のテキストデータとするためのPythonプログラムである。
この程度のプログラムはChatGPTに頼むと1分程度で作成してくれる。実際に使ってみて不具合があれば、プログラムとエラー内容を再度ChatGPTにそのまま入力することで修正プログラムを提示してくれる。これは無料版のChatGPTである。

 ChatGPTにログインアカウントを作れば、依頼した簡単なプログラムを記憶、記録してくれるので、再度ログインしたときにその記録(AIが要約した文として表示される)をクリックすることで、以前の記録作業のもとに新たな改良プログラムを作成することも可能である。



 このPythonスクリプトで対象となるデータはあるプログラムの出力データであり、繰り返し計算した結果を出力する。この出力データファイルの中にある任意の文字を含む行を連結し、このPythonスクリプトは連結された1行のテキストデータとして出力する。
 この1行のテキストデータは同じ長さを持っており、エクセルで読み込んで区切りをつけることで表データに変換し、元データの分析することを目的としている。

元データはFile.txtでこのpythonスクリプトと同じフォルダーにあることを前提としている。
検索文字はword1~word4の4文字列としている。File.txtはこれらの文字列が繰り返し現れるtextファイルであることを前提としている。

データ抽出Pythonスクリプト


def extract_lines_with_words(file_path, target_word, next_word, next2_word, next3_word):
with open(file_path, 'r', encoding='utf-8') as file:
lines = file.readlines()

result = []
all_lines = [] # 各ステップの行を格納するリスト

line1 = None # target_word を含む行
line2 = None # next_word を含む行
line3 = None # next2_word を含む行
line4 = None # next3_word を含む行

for line in lines:
line = line.strip() # 前後の空白や改行を削除

if target_word in line:
line1 = line # target_word を含む行を保存
line2 = None # リセット
elif next_word in line and line1:
line2 = line # 次の単語を含む行(連結しない)
line3 = None # 状態リセット
elif next2_word in line and line2:
line3 = line # 3つ目の単語を含む行(連結しない)
line4 = None # 状態リセット
elif next3_word in line and line3:
line4 = line # 4つ目の単語を含む行(連結しない)
all_lines.append((line1, line2, line3, line4)) # 各ステップをリストに保存

# 文字数の最大値を求める(空のデータがあってもエラーにならないようにする)
max_len1 = max((len(l[0]) for l in all_lines if l[0]), default=0)
max_len2 = max((len(l[1]) for l in all_lines if l[1]), default=0)
max_len3 = max((len(l[2]) for l in all_lines if l[2]), default=0)
max_len4 = max((len(l[3]) for l in all_lines if l[3]), default=0)

# 各行を最大文字数に揃えて空白区切りでフォーマット
formatted_results = []
for l1, l2, l3, l4 in all_lines:
l1 = l1.ljust(max_len1) if l1 else " " * max_len1
l2 = l2.ljust(max_len2) if l2 else " " * max_len2
l3 = l3.ljust(max_len3) if l3 else " " * max_len3
l4 = l4.ljust(max_len4) if l4 else " " * max_len4
formatted_results.append(f"{l1} {l2} {l3} {l4}") # タブの代わりにスペースを使用

return formatted_results


# ファイルとキーワードを指定
file_path = "File.txt"
target_word = "word1"
next_word = "word2"
next2_word = "word3:"
next3_word = "word4:"

# 関数を実行して結果を取得
extracted_lines = extract_lines_with_words(file_path, target_word, next_word, next2_word, next3_word)

# 結果を表示
print(file_path)
for line in extracted_lines:
print(line)

行方不明ファイルの発見経緯2025年01月22日 07:36

 昨日作業して保存したはずのWORDファイルが行方不明になった。フォルダーを調べても一昨日の古い同名のファイルが残っているだけである。
 昨日のファイルはどこに消えたのか。修正追加した作業は夢だったのか。よくある話である。

 ChatGPTに聞いたら、Recuvaという行方不明ファイルの検索ソフトがあるそうだ。使ってみたらC:ドライブを検索するのに1時間くらいかかる。それらしいファイルを開こうとしたらそれは有料だとの表示が出た。

 諦めかけて、ゴミ箱を除いてみたらそこにファイル名+拡張子asdとなっている昨日のファイルらしいものが残っていた。削除した記憶はないのだが、なぜか、同一名のファイルを開いたときに最初に開いたファイルがゴミ箱に移動したようだ。その際、ファイルの拡張子が自動的にasdになったようだ。ChatGPTでも最初にゴミ箱を探せと書いてあったが削除した記憶がないので無視したのが間違いの元だった。

これらの一連の作業時間は約2時間で、昨日修正追加に費やした作業時間も約2時間であるが、同じ作業を繰り返すのは精神的につらい。ゴミ箱に感謝して(お賽銭は入れなかったが)asdファイルをWORDで開いてバックアップを二つほど作成した。happy!?