Rubyで配列をCSVに出力
- CSVとは
-
Rubyで
CSV.open
メソッドを使用してCSVファイルを作成する -
Ruby で
File.write
メソッドを使用して CSV ファイルを作成する - Ruby を使用してターミナル内で CSV ファイルを生成する
- まとめ
長い情報のリストを扱っている場合があり、読みやすいように整理する必要があります。 それが CSV がテーブルにもたらすものです。
CSVとは
CSV はカンマ区切り値
を意味し、データをカンマで区切ってフォーマットすることを意味します。
このような出力形式により、データが表形式で適切に整理されるため、個人がそのようなデータを処理するときに、必要に応じて簡単に読み取ったり編集したりできます。
CSV データは、独自の .csv
形式またはより一般的な .txt
ファイルのいずれかで保存できます。
Ruby フレームワークを使用して、配列内のデータから CSV ファイルを作成するさまざまな方法を見てみましょう。
RubyでCSV.open
メソッドを使用してCSVファイルを作成する
この例では、CSV.open
関数を作成し、ファイルを配置するパスを入力します。 次に、CSVタグ内にCSV形式で整理したいデータの配列を入力します。
新しいファイルを作成し、new.rb
という名前を付けて、次のコードを入力します。
require 'csv'
CSV.open("C:/Users/HP/Downloads/csv/outfield.txt", "w") do |csv|
csv << ["one", "two", "three", "four"]
csv << ["eight", "five"]
# ...
end
このコードを実行すると、CSV.open
ブラケットで指定したパスに作成された outfield.txt
ファイルが表示されます。 次に、指定されたパス内にファイルを作成できるように、パスのすぐ横に "w"
を追加したことがわかります。
そこから "w"
を削除すると、次のエラー メッセージが表示されます: 書き込み用に開かれていません (IOError)
。
Ruby で File.write
メソッドを使用して CSV ファイルを作成する
この方法では、ファイルを作成するパスに "w"
を追加する必要はありません。 これは、File.write
がすぐに書き込み用のパスを開き、ファイルを作成するためです。
新しいファイルを作成し、new.rb
という名前を付けて、次のコードを入力します。
tables = [["first", "second", "third"],["army", "marine", "navy", "blackops"], ["James", "Bond", "007"]]
require "csv"
File.write("C:/Users/HP/Downloads/csv/outfe.txt", tables.map(&:to_csv).join)
ここでは、tables
タグ内に配列を作成しました。 次に、File.write()
関数内でファイルを作成する場所を指定しました。
次に、map
関数を使用して、tables 配列のデータを CSV 形式で返します。 このコードを実行すると、しばらくすると、指定したパスに新しいファイルが作成されます。
Ruby を使用してターミナル内で CSV ファイルを生成する
このメソッドは、CSV 形式のデータを含むファイルを作成しません。 代わりに、端末にデータを表示します。 これは、結果をすばやく使用したり、より快適な形式でデータを読み取りたい場合に最適です。
新しいファイルを作成し、new.rb
という名前を付けてから、これらのコードを入力します。
require 'csv'
csv_string = CSV.generate do |csv|
csv << ["google", "bing", "ask", "search"]
csv << ["find", "seek"]
# ...
end
CSV.generate
関数は csv
括弧内の配列を取り、CSV 形式でデータを生成します。 コードを実行すると、端末内に CSV 形式のデータが表示されます。
まとめ
データをコンマで区切って明確に整理する CSV の機能により、長いデータ リストを一目で確認できます。
Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.
LinkedIn