はじめに
CSV取り込み処理を作ることって結構ありますよね?
たまに1行目がヘッダーではないCSVデータってありますよね?
あれ何なんでしょうね?
何でそんなことをするのかわからないんですけど、取り込まないといけないですよね?(使命感)
どんなデータ?
実装
1、2行目をスキップして行を配列として取得するだけなら単純なんですが、
CSV.foreachと同じようにrow['ヘッダー名']でデータを取得できるようにするには一工夫が必要です。
# CSVをオープン
csv = CSV.open(
path,
undef: :replace,
replace: '?'
)
# ヘッダの上に邪魔な行が2行あるので除去
csv.readline
csv.readline
# ヘッダを退避
header = csv.readline
csv.each do |row|
# CSV.foreachと同じようなデータの取り方にパース
row = CSV.parse_line(row.join(','), headers: header)
end
おわりに
邪魔な行があったりなかったりする場合の処理はよしなにやってください。
ブログで見たい方はこちら
Ruby CSV取り込み ヘッダーの上にいらない行がある場合の処理