루비를 사용하여 CSV 파일의 열을 재정렬하려고합니다.CSV 파일의 열 순서를 어떻게 재 배열합니까?
하기 전에 :
$ cat foo.csv
foo,bar,foobar
1,2,3,
4,5,6,
7,8,9,
후 : 불행하게도
bar,foo,foobar
2,1,3,
5,4,6,
8,7,9,
내가 파일을 쓸 때, 나는과 같이 ","값을 추가로 얻을 :
bar,foo,foobar
"2,1,3,
","5,4,6,
","8,7,9,
"
사람이 수 csv 파일에 추가 인용 부호가 나타나는 이유를 알아 보도록 도와주십시오.
저는 루비가 처음이에요. 그래서 내 코드가 이상적이지 않으면 다른 아이디어를 열어 둡니다.
require 'csv'
acsv = CSV.read("./foo.csv", {headers:true, return_headers:false})
@headers = CSV.open("./foo.csv", 'r', :headers => true).read.headers
# Rearrange headers
temp_index = @headers[0]
@headers[0] = @headers[1]
@headers[1] = temp_index
# Rearrange Columns
acsv.each do |row|
temp_index = row[0]
row[0] = row[1]
row[1] = temp_index
end
puts "acsv is"
puts "#{acsv}"
# Example to write headers http://stackoverflow.com/questions/15905985/how-to-write-columns-header-to-a-csv-file-with-ruby
newcsv = CSV.open("bar.csv", "wb", write_headers: true, headers: @headers) do |csv|
csv << acsv
end
업데이트 헤더의 제거 불필요한 변환 headers_array하는
어떻게 CSV 파일이 보이나요? 결국 CSV에 끝에 쉼표가 붙은 이유는 무엇입니까? –
@Cupcake 질문을 편집했습니다. 문자 그대로 foo, bar, foobar ... – spuder
왜 CSV에 끝에 쉼표가 있습니까? –