チャレンジ #42: HTML テーブルの解析
- RSS フィードを購読する
- トピックを新着としてマーク
- トピックを既読としてマーク
- このトピックを現在のユーザーにフロートします
- ブックマーク
- 購読
- ミュート
- 印刷用ページ
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
先週のチャレンジの解答はこちらになります。
今週のチャレンジではHTMLテーブルの解析に挑戦してみましょう。いつものように、チャレンジに解答する方法はいくつかあります。正規表現を使用して解くことができるので、Advanceとしましたが、正規表現が絶対に必要なわけではありません。
入力ファイルの Description フィールド内には<td>タグで囲まれた14 個の名前と値を含む HTML テーブルがあります。
各組み合わせは <tr>tag で指定された異なる行で見つけることができます。
あなたのゴールは、14 個の名前と値の組み合わせを含むテーブルを生成することです。
*WEBの情報が更新されていたため出力ファイルを更新いたしました。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
答えとあっていませんが、これでいいような気がします。
あと<>でくくられてたらすべてNULLにすべきでしょうか?個人的には日付とかは値として欲しいと思ったのでNULLだけ例外処理してみました。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
あまりきれいなワークフローになってないです。
せっかくなので誰も使わないであろうLaboratoryにあるMake Columnsツールを使おうと思って、それにあわせました。
この手の処理はどうしても「おまけ」の方が楽だったりしてしまいますね...w
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
ノンプログラマーの自分は、今回かなり苦戦してTokimatsuさんに教えてもらいながやったのでWorkflowは完全パクリになっています。正規表現の勉強にはなりました。HTMLの中身と回答が違いますね。
また<>内の文字を消すのと、<Null> だけ消すの2通りやっていみました。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
2パターン作ってみました・・・(とりあえず結果出すだけのパターンと、若干工夫したバージョンです)。
標準でHTMLのタグの中身を抜き出す機能ほしいですね・・・。
しかし、今回は結果がおかしいですね・・・。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
スマートなやり方ではないですが
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
正規表現の問題としては結構良問だと思います。
が、HTML の構造を理解してから出ないとキレイに抽出できないので、HTML 構文を確認できるツールがあれば良いなと思いました。
(今回はCSVに吐き出してEditor でHTML 確認しました)
HTML で表示してしまったら、まぁお題としての意味は無いんですが。。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
HTMLパースツール欲しい!
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- モデレーターに通知する
今回の問題のおかげで、正規表現の最短一致の"*?"の使い方が理解できたみたいです。