2010-05-24 4 views
1

는 나는이 같은 데이터 파일이 : 나는 거기에 7월 1일 (445)가 02으로 얼마나 많은 발행 수를 찾아 7월 500 싶습니다 결국분석 파일 루비

01 JUL something 
     something 
     something    445 
     something else 
01 JUL whatever 
     everwa3 
     lklkj     445 
     something else 
02 JUL ljkjlkj 
     ljkljlkj 
     lkjkjlk    500 
     lkjkj 
02 JUL ljlkjklj 
     lkjkjlkj 
     lkjkj     500 
     lkjlkj 

이 것이 경우

.. 내가 라인에서 읽고 밖으로 데이터를 얻을 수 있어요

01 JUL 445 = 2 

02 JUL 500 = 2 

는 ... 어떻게 같은 일을 계산에 대해 갈 수 있나요?

답변

1
counts = {} 
date = "" 
file.readlines.each_with_index do |l, i| 
    if i % 4 == 0 # first line 
    date = l.split("\t").first 
    elsif i % 4 == 3 # third line 
    wierd_num = l.split("\t").last 
    counts[date+" "+wierd_num] ||= 0 
    counts[date+" "+wierd_num] += 1 
    end 
end 

puts counts # => {"01 JUL 445" => 2, "02 JUL 500" => 2} 
+0

감사합니다. 하지만 이제는 UTF-8 문자로 문제가 있습니다. http://stackoverflow.com/questions/2897398/broken-utf-8-string-ruby를 참조하십시오. – josh