Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

CSV取り込み処理を作ることって結構ありますよね?
たまに1行目がヘッダーではないCSVデータってありますよね?
あれ何なんでしょうね?
何でそんなことをするのかわからないんですけど、取り込まないといけないですよね?(使命感)

どんなデータ?

こんなデータ
image.png

実装

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

ayies128
株式会社illustrious CTO。 EC業務を色々な角度から効率化できるように日々システム開発を行っています。 システム開発の話から飲みに行こうって話までなんでもどうぞ。 うどんとお酒と #UVERWorld が大好きです。 世界で売るためのECインフラサービス「lismoa」の開発運営を行なっています。 https://lismoa.com/
http://nabesys.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away