2013-07-25 2 views
1

16 열 16 개별 배열로 csv 파일을 구문 분석하려고합니다. 각 셀이 배열의 다른 객체가되어야합니다. 그래서 열 1의 값이 arr1되고, 열이 이것은 내가 지금까지 가지고있는 코드 등 arr2된다 :루비와 배열을 구분하는 csv 열을 구문 분석

file = "FS_Email_Test.csv" 

arr1 = [] 
arr2 = [] 
arr3 = [] 
list =CSV.foreach(file, :col_sep => ";", :return_headers => false) do |row| 
     arr1 << row[0].to_i 
     arr2 << row[1].to_i 
     arr3 << row[2].to_s 
     end 
puts arr1 

이 코드가 제대로 arr1로, 컬럼을 구문 분석,하지만 arr2 및 arr3 0 값을 반환합니다. 각 열에 대해 작업해야합니다. 아이디어/생각? 도와 주셔서 감사합니다.

+0

당신이 우리에게 CSV 파일의 몇 가지 예를 들어 내용을 적어주세요 수 있습니까? – tessi

+0

여기에 무슨 일이 일어나고 있는지, 실제로는 실제 입력이되는지 아이디어를 얻으려면 몇 가지 예제 입력을 볼 필요가 있습니다. – nil

+0

물론입니다. 이메일, 아이디 번호, [email protected], 2, [email protected], 1. 내용은 시간에 따라 바뀌기 때문에 무의미합니다. 하나의 큰 배열이되기 위해서는 첫 번째 열에있는 모든 것을 필요로합니다. 그런 다음 두 번째 열, B 열의 모든 것이 별도의 배열이되어야합니다. 16 열에 대해서도 마찬가지입니다. –

답변

1

문제가 해결되었습니다. .to_i 및 .to_s 배열의 끝에 문제가 있습니다. 나는 그 조각을 끄고 코드는 잘 동작한다. 도와 주셔서 감사합니다.

코드 :

file = "FS_Email_Test.csv" 

arr1 = [] 
arr2 = [] 
arr3 = [] 
list =CSV.foreach(file, :col_sep => ";", :return_headers => false) do |row| 
     arr1 << row[0] 
     arr2 << row[1] 
     arr3 << row[2] 
     end 
puts arr1