🐘
【Ruby】CSV クラスの扱い
概要
前回 File クラスの扱いについて説明したので、今回は CSV について、よく使うメソッドについて説明します。
open
File クラスとにており、ブロックを渡すことができます。
また、第二引数でモードの選択もできます。
# 読み込み
CSV.open("./sample_file") do |csv|
# csv.read などのファイル操作
end
# 書き込み
CSV.open("./sample_file", "w") do |csv|
csv << ["firstName", "lastName","Age"]
csv << ["Tanaka", "Ichiro", 20]
csv << ["Yamada", "Hanako", 25]
end
foreach
CSV.foreach を使うと、1行ずつ読み込むことができ、大量のデータを効率よく処理することができます。
以下のようなファイルがあった場合、
sample_file
firstName,lastName,Age
Tanaka,Ichiro,20
Yamada,Hanako,25
foreach を使うと以下のように処理できます。
このとき、ブロック引数の row
は、各行の配列となります。
results = []
CSV.foreach("./sample_file") do |row|
results << row[0]
end
results
=> ["firstName", "Tanaka", "Yamada"]
headers
オプションを true にすると、最初の行(ヘッダー)を除き、それ以外の行をハッシュ形式のように取得することができます。
results = []
CSV.foreach("./sample_file", headers: true) do |row|
results << row["firstName"]
end
results
=> ["Tanaka", "Yamada"]
Discussion