使用Ruby 1.9.2我需要解析一个CSV文件,并输出每个标题键和单个值组合在一起的行,并带有行号。
标题:key1,key2,key3
第1行:a,b,c
row2: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
我在那里做错了什么想法?
答案 0 :(得分:1)
我认为这是一种更简单的方法:
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
答案 1 :(得分:0)
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