« 高畝 | トップページ | 春一番 »

2008年2月19日 (火)

ログの解析 続き

掲示板1件分のデータを1行のstringに変換出来たので、更に名前、メール、url、タイトル、記事、時間に分割し処理しやすいように変換する。データは"<>"で区切られている。行の始めから"<"を検索し文字の位置をカウントする。合致したら次の文字が">"であれば始めの位置からカウントした文字までを抜き出してlistにする。

(do ((d log (cdr d))
     (ss ()))
  ((null? d) ss)
  (do ((i 0 (+ 1 i))
       (l (car d))
       (start-n 0)
       (end-n 0)
       (a ()))
    ((= i (string-length l))
     (set! a (append a (list (substring l start-n (string-length l)))))
     (set! ss (append ss (list a))))
    (if (char=? (string-ref l i) #\<)
        (if (char=? (string-ref l (+ i 1)) #\>)
            (begin
              (set! end-n i)
              (set! a (append a (list (substring l start-n end-n))))
              (set! start-n (+ i 2)))))))

結果は

(("all my child"
  "dvkq@hotmail.com"
  "http://all-my-child.group-love.com"
  "all my child"
  "Good site. Thanks.<br>"
  "2006/08/23 16:52:58")
("ass"
  "awiz@hotmail.com"
  "http://ass.pisdato.com"
  "ass"
  "Nice site. Thanks.<br>"
  "2006/08/23 16:18:58") ...)

1行分のデータが( )でくくられる。

|

« 高畝 | トップページ | 春一番 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 高畝 | トップページ | 春一番 »