Разобрать CSV на несколько строк, где каждое значение печатается после заголовка - PullRequest
1 голос
/ 01 ноября 2011

Использование Ruby 1.9.2 Мне нужно проанализировать файл CSV и вывести строки с каждым ключом заголовка и отдельным значением, соединенным вместе, с номерами строк.

заголовок: ключ1, ключ2, ключ3
ряд1: а, б, в
строка 2: d,, f

ожидаемый результат:

1
key1 a
key2 b
key3 c

2

key1 d
key2
key3 f

Сейчас я работаю над тем, чтобы просто объединить заголовок со значениями, и я довольно сильно проваливаюсь.

require 'csv'

header = File.open('TEXT.CSV', &:readline) 
keys = header.split(",")


values = CSV.read("TEXT.CSV")

def combine(a,b)
  zipped = a.zip(b)
  Hash[zipped]
end

keyvalue = values.each do |i|
  combine(keys,i)
end

Есть идеи, что я там не так сделал?

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Я думаю, что это более простой способ:

require 'csv'
csv = CSV.read('branch.csv', :headers => true)
csv.each do |line|
  puts csv.headers.zip(line.fields)
end

# =>    
key1
a
key2
b
key3
c
key1
d
key2

key3
f
0 голосов
/ 01 ноября 2011
require 'csv'
lineN = 0

CSV.read( filename  ).each do |arr|
  if lineN == 0
    headers = arr
  else
    puts "line #{lineN}"

    headers.zip(arr).each do |a|
      puts "#{a.first} : #{a.last}"
    end
  end
  lineN += 1
end

создает:

line 1
key1 : a
key2 : b
key3 : c

line 2
key1 : d
key2 : 
key3 : f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...