Edited at

Ruby CSV 取り込み ヘッダーの上にいらない行がある場合の処理


はじめに

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取り込み ヘッダーの上にいらない行がある場合の処理