CSV の扱い
csv ライブラリです。
「CSV の扱い」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
CSV とは
CSV(Comma-Separated Values)は、表形式のデータをプレーンテキストとして保存します。1 行につき 1 レコードで、フィールドはカンマで区切ります。Ruby の標準 csv ライブラリで読み書きできます。
require 'csv'
row = CSV.parse_line('Alice,30,Engineer')
p rowCSV 文字列の解析
CSV.parse は、複数行の CSV 文字列を行配列の配列に変換します。
require 'csv'
data = "name,age\nAlice,30\nBob,25"
rows = CSV.parse(data)
p rowsヘッダーの使用
headers: true を渡すと、最初の行がフィールド名になり、各行をハッシュのように扱えます。
require 'csv'
data = "name,age\nAlice,30"
CSV.parse(data, headers: true).each do |row|
puts(row['name'])
puts(row['age'])
end行の反復処理
解析した行は通常の配列と同じようにループ処理でき、インデックスでフィールドにアクセスできます。
require 'csv'
rows = CSV.parse("1,a\n2,b\n3,c")
rows.each { |r| puts "#{r[0]} -> #{r[1]}" }型の変換
converters: :numeric を使用すると、数値フィールドを自動的に Integer または Float に変換できます。
require 'csv'
rows = CSV.parse("10,20\n30,40", converters: :numeric)
puts(rows[0][0] + rows[1][1])CSV の生成
CSV.generate は CSV 文字列を生成します。ブロック内に配列を追加すると、行を追加できます。
require 'csv'
out = CSV.generate do |csv|
csv << ['name', 'age']
csv << ['Alice', 30]
end
puts out引用符と特殊文字
CSV は、カンマ、引用符、改行を含むフィールドを自動的に引用符で囲み、構造を維持します。
require 'csv'
out = CSV.generate do |csv|
csv << ['note', 'Hello, world']
end
puts out区切り文字のカスタマイズ
タブ区切りやセミコロン区切りのファイルには、col_sep を設定します。TSV やヨーロッパ式の CSV に対応できます。
require 'csv'
rows = CSV.parse("a;b;c", col_sep: ';')
p rowsファイルへの書き込み
モード 'w' で CSV.open を使うと、行をファイルへ直接ストリーム出力できます。
require 'csv'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'people.csv')
CSV.open(path, 'w') do |csv|
csv << ['name', 'age']
csv << ['Carol', 28]
end
puts(File.read(path))ファイルからの読み込み
CSV.read はファイル全体を読み込み、行の配列に変換します。parse と同じオプションを受け取ります。
require 'csv'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'nums.csv')
File.write(path, "x,y\n1,2\n3,4")
rows = CSV.read(path, headers: true)
puts(rows.first['y'])列の合計
よくある処理に、列を読み込んで集計することがあります。ヘッダー、数値変換、map を組み合わせます。
require 'csv'
data = "item,price\npen,3\nbook,12"
total = CSV.parse(data, headers: true, converters: :numeric).sum { |r| r['price'] }
puts(total)クイックチェック
row['age'] のように列名で CSV のフィールドへアクセスできるようにするオプションはどれですか。
まとめ: CSV の操作
表形式のデータを扱えるようになりました。
CSV.parse/CSV.readで読み込みますheaders: trueで名前付きフィールドを使用しますconverters: :numericで型付きの値に変換しますCSV.generate/CSV.openで書き込みますcol_sepで TSV などの区切り文字を指定します
require 'csv'
p CSV.parse_line('a,b,c')よくある質問
「CSV の扱い」レッスンは無料ですか?
はい。「CSV の扱い」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「CSV の扱い」で何を学びますか?
csv ライブラリです。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「CSV の扱い」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- JSON の読み書き
- CSV の扱い
- YAML 設定
- フォーマットの選択