アン、N才の誕生日おめでとう
規則的な文字列をなんとかかんとかする
登場人物
![]() | 【ルーナ】 どこにでもいる普通の村娘。 |
![]() | 【マイラス】 パソコンにくるしむエルフ。 |
導入
![]() | ……。 ああ、どうしたものか。 |
![]() | どうしたの。 |
![]() | これを見てくれ。 |
アン 1才の誕生日おめでとう
ジョン 1才の誕生日おめでとう
マリー 1才の誕生日おめでとう
(以下省略)
![]() | 知り合いの娘の誕生日カードを作るのを頼まれてな。 私が多少ぱそこんに詳しいからって……。 |
![]() | あ、そう(多少詳しい……?)。 |
![]() | このテキストファイルをもとに今年は2才だから、「2才の誕生日おめでとう」としたいわけだ。 |
![]() | インデザインでも使えば? |
![]() | インデザはアウトオブ範疇なんだ。 |
![]() | この元々のテキストデータをなんとかするだけでも 喜びがあるのだが。 |
![]() | はじめは、1→2に置換……。 しようと思ったのだが。 このふぁいるにはsince:1880みたいなのがあるわけでな。 |
![]() |
こっちの1は変えたくないんだよ。 このなんとか才だけなんとかしたい。 |
![]() | since:1880って100年以上前じゃないの。 |
その1:矩形選択
![]() | そうね。 データが規則的に揃ってるときは、矩形選択が使えるわ。 まずサクラエディタ(※フリーソフト)入れてもらえる? |
![]() | いきなりフリーソフトか。 |
![]() | メモ帳じゃ限界ってもんがあるわよ。 |
![]() | まあいい。コピペしてやったぞ。 |

![]() | んじゃ、選びたいところにカーソルもってきて。……Alt押してからカーソルをびーって引っ張って。 |

![]() | で、2歳にしたいんだっけ? 2を入力。 |

![]() | 残った1はDeleteキーで削除してね。どうよ。 |
![]() | おお……。ありがたい。 |
![]() | ま、サクラエディタっていったけど、矩形選択できるエディタならなんでもいいわよ。 |
その2:正規表現
![]() | ……っ。 |
シャルロッテ 1才の誕生日おめでとう
マリーゴールド 1才の誕生日おめでとう
ハナ 1才の誕生日おめでとう
(以下省略)
![]() | あら。桁がそろわなくなっちゃったわけね。可哀想に。 |
![]() | ……全員を祝いたい。 |
![]() |
まあ……「空白のあとからナントカ才の前まで」みたいな規則性があればなんとかできるわ。 貸してみなさい。 |

![]() | 検索タブから「置換」を選んで正規表現を使うわ。 |

![]() | 一応検索しておいて該当箇所をマークしてみたわ。こうよ。 |

![]() | 実行するとこんなかんじ。 |

![]() | ……??? |
![]() |
正規表現というのにチェックを入れて、パターンにマッチする文字列をひっかけることができるわ。 この正規表現は「なんか空白文字があった場所から、任意の文字数、『才』って文字まで」を検索してるわ。 |
![]() |
ぱぱっとやっちゃったけど、もっとちゃんと書けるし、もっとちゃんと書いたほうがいいと思うわね。 例えば、これだともっと前に空白文字があったらぜんぶひっかかっちゃうし。 あと「才三」みたいな名前の人が奇跡的にいたらたいへんよ。「才の誕生日」まで入れるべきかしら。 欲張ると3桁目くらいまでの0-9の数字3文字みたいな条件をくわえて…………。 |
![]() | わかった。手でいっこいっこやりたい。 |
![]() | あきらめないで。 |
その3:カウントアップ
![]() | ……あのね。 |
アン 1才の誕生日おめでとう
アン 2才の誕生日おめでとう
(以下省略)
アン 500才の誕生日おめでとう
![]() | ……こういうの、やりたいんだが。 |
![]() | ………。(おもむろにPythonを立ち上げる) |


![]() | 後は好きにコンソールからコピペでもしなさいよ。 |
【コード】
str = 'アン {n}才の誕生日おめでとう、'
for i in range(101,201):
print(str.format(n=i))
※特殊文字を使いたい場合はエスケープしよう!
2021/11/27
サクラエディタはすごいってこと!
(2024/12/1)追記:いまならChatGPTに突っ込むorコードを書いてもらうと楽だと思う。