📅  最后修改于: 2023-12-03 15:34:45.319000             🧑  作者: Mango
CSV(Comma Separated Values) 是一种常见的用于存储数据的格式,它使用逗号作为分隔符将数据分隔为一行或多行。在 Ruby 中,我们可以使用标准库中的 csv
模块来读取、写入和解析 CSV 数据。
使用 CSV.read
方法可以简便地读取一个 CSV 文件。该方法返回一个二维数组,其中每个子数组代表一行数据。
require 'csv'
rows = CSV.read('data.csv')
rows.each do |row|
puts row.inspect
end
上面的代码将 data.csv
文件中的数据读入 rows
变量中,并将每一行数据打印到标准输出中。
使用 CSV.parse
方法可以解析一个 CSV 数据字符串。该方法返回一个二维数组,其中每个子数组代表一行数据。
require 'csv'
csv = "name,age,gender\nAlice,25,Female\nBob,30,Male"
rows = CSV.parse(csv)
rows.each do |row|
puts row.inspect
end
上面的代码将一个 CSV 数据字符串解析为一个二维数组,并将每一行数据打印到标准输出中。
使用 CSV.open
方法可以打开一个 CSV 文件进行写入操作。该方法接受一个文件名和一个写入模式,返回一个可以写入 CSV 数据的 IO 对象。
require 'csv'
CSV.open('output.csv', 'w') do |csv|
csv << ['name', 'age', 'gender']
csv << ['Alice', 25, 'Female']
csv << ['Bob', 30, 'Male']
end
上面的代码创建了一个名为 output.csv
的 CSV 文件,并将数据写入其中。
使用 CSV.foreach
方法可以对一个 CSV 文件进行遍历,并对每个单元格进行转换。该方法可以接受一个块作为转换函数。
require 'csv'
CSV.foreach('data.csv', headers: true, header_converters: :symbol) do |row|
puts "#{row[:name]} is #{row[:age]} years old."
end
上面的代码读取名为 data.csv
的 CSV 文件,并将其中的每一行转换为 Hash
对象。每个单元格的值都将调用 header_converters
参数指定的转换函数进行转换。在本例中,我们将 header_converters
设置为 :symbol
,表示将每个头部名称转换为 Symbol
类型。
CSV 数据是一种常见的数据存储格式。在 Ruby 中,我们可以使用标准库中的 csv
模块来读取、写入和解析 CSV 数据。通过熟练掌握 csv
模块的用法,我们可以在 Ruby 中高效地处理 CSV 数据。