Pythonの文字列フォーマットが便利
 Web関連のプログラム作成にはずっとPHPを使ってきたのですが、今回このサイトのプログラムを書くにあたってPythonを使った一つの理由に「文字列フォーマット」が使えてプログラム内でhtmlを書く時にすごくわかりやすい、というのがあります。htmlの大枠の部分は外部に置いたテンプレートに記述してしまえばよいのですが、リストだとかテーブルなど繰り返し処理が多いものはプログラム内に書いた方が便利なわけです。例えばこのサイトの月別のアーカイブの場合、記事の日付、カテゴリー、タイトルを一つのリストにして並べているわけですが、これをPHPのechoの省略形で書けば通常のhtmlの部分に
 <li class="hoge"><?=$entry_date?> [<?=$category?>] <?=$entry_title?></li>
と書けばよいのですが、今回のプログラムの場合ファイルにデータを書きこまなければならないので、echoで表示するだけではダメなのです。変数に代入するためにechoの省略形を使わずに書くと
$data ="\t\t".'<li class="hoge">'.$entry_date.' ['.$category.'] '.$entry_title.'</li>'."\n";
とった具合になります。文字列はダブルクォーテーションで囲めば内部の変数を評価するのですが、htmlのタグの属性はダブルクォーテーションで囲む方がよいとされているので、この場合使えないのですよ。じゃあシングルで統一すればいいじゃんかと思うかもしれませんが、ソースの見た目を考えてタブや改行を入れる場合はダブルクォーテーションで囲まないと評価されないので、結果両者が入り組んで混在するものを「.」でつなぐという慣れない人にはまったく意味不明の妙な記述にならざるを得ないわけです。

 これをPythonで記述すると下記のごとし。
data = '\t\t<li class="hoge">%s [%s] %s</li>\n' % (entry_date, category, entry,title)
 かなりすっきりしてると思いません? PythonではC言語のprintfみたいに文字列の中に変数を埋め込める「文字列フォーマット」という機能があるので、こういう記述が可能なわけです。

 というわけで、PHPはhtmlを「表示する」のにはすごく便利ですけど、ファイルとして残すデータにしようとすると、やや不便だったりする面もあるみたいです。さらにわかりやすい言語があるのかもしれませんが、Pythonもいいですよ、ということで。

【追記】などと書きましたが、PHPにもちゃんと「sprintf」という関数があって、変数を埋め込めるんですね。あぁ〜恥ずかしい。おれは今まで何をやっていたんだ…。