2017-04-05 4 views
0

은 내가 Nexpose의 API 인데요 CSV 보고서 분석하기 위해 노력하고있어 경우 CSV 기반 :구문 분석하는 방법 조건

nsc.list_reports.each do | report | 
    puts report.name 
    report_id = report.config_id 
    report_summary = nsc.generate_report(report_id, true) 

    report = nsc.download(report_summary.uri) 
    puts report  


    csv = CSV.read(report, :headers => true, :converters => :all).select do|row| 
    row['number available'] > 0 && row['Score'] >=9 
    end 

    csv.each do |row| 
    puts row['name'] 
    end 
end 

을하지만 기본적으로 이것은 나에게

을주는 무슨의 형식은
ID,name,title,Score,number available 
1,"test1","title1",4,3 
2,"test2","title2",8,0 
3,"test3","title3",9,0 
4,"test4","title4",10,6 
5,"test5","title5",5,22 
6,"test6","title6",9,1 
7,"test7","title7",2,5 

나의 목표는 "score"> = 9이고 "number available"> 0 인 것을 찾는 것입니다. 따라서이 예제에서는 'test4'와 'test6'을 반환해야합니다.

+0

_WHAT_ CSV 구문 분석을 시도 하시겠습니까? "[mcve]"와 링크 된 페이지를 읽으십시오. 문제를 나타내는 최소한의 코드, 문제를 나타내는 코드 및 예상 출력을 지원하는 최소 입력 (CSV)이 필요합니다. 당신은 우리에게 예상되는 결과물을 주었지만 그것에 도달 할 방법은 없었습니다. –

답변

0

헤더를 기호로 변환하지 마십시오. 이 아닌 select을 사용하십시오. 일부 세부 정보 :

csv = CSV.read(report, :headers => true, :converters => :all).select do|row| 
    row['number available'] > 0 && row['Score'] >=9} 
end  

csv.each do |row| 
    puts row["name"] 
end 
+0

from C : /Ruby22-x64/lib/ruby/2.2.0/csv.rb : 1256 :'열기 ' \t C : /Ruby22-x64/lib/ruby/2.2.0/csv.rb : 1256 :'open '에서 \t C : /Ruby22-x64/lib/ruby/2.2.0/csv.rb : 1330 :'read' \t C : /Users/1/RubymineProjects/nexpose/main.rb C :/Users/RubymineProjects/nexpose/main의 \t에있는 ': 각 :'에 ': (상단) (필수) 블록'에 ' \t C : /Users/RubymineProjects/nexpose/main.rb : 18 :\t -e : 1 :로드 중 \t -e : 1에서 :

' – encrypt

+0

'puts 보고서 바로 다음에이 코드를 복사하여 붙여 넣으십시오. '줄 – steenslag