2004年03月07日

天気予報 cgi 公開
[ python]
とりあえず、もう少し汎用性を持たせた形で書き直しました。 とはいえ、フォーマットを自己解析しただけですので表示がおかしくなる都市が存在するかもしれません。一応、日本の金沢とアメリカの都市(ソースに urlが示されています)で確認はしております。
もしアメリカなどの国外の都市をどーしても表示したい場合は、表示部分を修正ください。

get_weather.py
get_weather_v3.2.py
get_weather_v3.3.py
get_weather_v3.4.py
get_weather_v3.5.py
get_weather_v3.5.3.py
get_weather_v3.5.4.py

このプログラムは非商用にかぎり自由にご利用ください。、一応著作権は放棄しておりません。
python 2.2* 2.3* で確認しております。

V0.3.5.4に変更します。 6/25 14:20
天気を日本語表記にしました。もし英語の時は、予想してない天気ということでそのとき追加します。

V0.3.5.3に変更します。 6/14 15:51
いやはや、今日の天気、condition がない場合、weatherData[key, 値] がエラーになります。 weather データーをつくるとき、キーと値の設定をしますが、キーしか設定できていないことが起きるわけです。値がない場合は "--" というデーターを入れました。 src の 3.5.3 のコメントを見て下さい。

V0.3.5に変更します。 3/12 23:15
reduce 、filter等々 を使い、正規表現をみなおし少しコンパクトにしました。

V0.3.4に変更します。 3/10 18:40
calendar モジュールをいれ 今日の曜日を日本語でいれ、表示も 2004/3/10 のようにしました。 明日の天気が時間によって今日になっていたのを、曜日を確認し翌日になるようにしました。

V0.3.3に変更します。 3/8 17:40
正規表現を書き直しました。 パターンの書き方におおきな誤りがありました。raw string で書かないといけないところを、そのまま書いてました。きっと \s|. のように OR でつかっていたので偶然動いただけです。

v0.3.2 に変更します。
while ループを、for in に変更しました。 re.compile を使い、正規表現が複雑そうなものはループの外で計算させるようにしました。 string.find(hoge, patern) を hoge.find(patern) に変更しました。 /font>

設置する場合は、拡張子を cgi にし テンプレート Main Index に次のように書いていただければいいかと思います。

<div class="weather"&g
t <iframe src=" http://heididorf.sakura.ne.jp/cgi-bin/get_weather.cgi" frameborder=0 width=220
height=500 scrolling=no title="お天気予報"></iframe> </div>

今回、最初、何行目のある文字の後ろにこのデータがあると決めうちで書いてみましたが、時間によってある項目が減ったり、増えたりして、また、都市によってデーターが存在する行が変化するため汎用性が大変低くなりました。そこで、アイディアを練り直し、データーをリスト、ディクショナリを使ってはまとめるようにしました。

なにぶん、通常のプログラムはすべて awk で、簡単なcgi は AWK で書いてしまいますので、python は超初心者です。マニュアルをみながら書いたのですが、python の日本語情報は存在するのですがやはり難解な部分が多く、テストを繰り返してしたいことを、試行錯誤しながら書いています。

python は、変数の宣言はいらないのですが、いきなりリスト、ディクショナリーに新規追加ができないようで、若干とまどいました。また、AWK は c ライクな書き方をするのですが、python はかっこを使わないということ、ループ、if などには : を使うなど、AWK ユーザーにはやはり頭がたこになりますね。ただし、プログラムは、覚えれば書きやすい、読みやすうと思います。

最後に get_weather_v3.py は、むちゃくちゃ計算が遅いです。なぜ? <--- 正規表現の使い方がむちゃくちゃだから?

投稿者 heididorf : PM