Ruby 第3回目 csv⇒xml
ココログのアクセス解析で日ごとにCSVファイルが作れるので、これを利用してCSVファイルを読み込み、XML形式の文書ファイルをRubyで作ってみることに挑戦しました。
csv2xml.rb
| require "kconv" require "csv" print "<?xml version='1.0' encoding='UTF-8' ?>\n" print "<?xml-stylesheet type='text/xsl' href='./cocolog.xsl'?>\n" print "<item>\n" youso=["date","uniqaccess","pagetitle","remotehost", "useragent","from","display","language" ,"id"] filename="logcsv/"+ARGV[0]+".csv" CSV.open(filename,'r'){ |i| m=-1 print "<row>\n" i.each {|j| m+=1 j=j.gsub!(/あっちゃんずちのさとちゃん: /,"").toutf8 if m==2 if m==5 && j j.gsub!(/%[a-fA-F0-9][a-fA-F0-9]/){|k| k.tr!("%","").to_a.pack("H*")} j=j.toutf8.tr('&+','_ ').gsub(/</,"<").gsub(/>/,">") end print " <",youso[m],">",j,"</",youso[m],">\n" if j } print "</row>\n" } print "</item>" |
CSVファイルを読み込むために、"csv"をrequire
漢字コードの変換を行うために、"kconv"をrequire。これで、Stringクラスに対してメソッドとして、toutf8やtosjis等が使えるようになりますね。
今回勉強になったこと
(1)'r'指定でcsvをopenすると、イテレータで1行ごとの処理が行える
(2)packは配列を変換するため、文字から配列に直して使用した
(他に方法はないのかな?現時点では不明)
(3)csvの要素がないものはnilが入っているので、そのまま条件式で使用した
とりあえず、文字コードはutf-8を使用することにして、作られたファイルをいろいろ眺めながら今後どう利用していけるかを考えてみます。
| 固定リンク | コメント (0) | トラックバック (1)

最近のコメント