📜  ruby csv 解析 - Ruby (1)

📅  最后修改于: 2023-12-03 15:34:45.319000             🧑  作者: Mango

Ruby CSV 解析

CSV(Comma Separated Values) 是一种常见的用于存储数据的格式,它使用逗号作为分隔符将数据分隔为一行或多行。在 Ruby 中,我们可以使用标准库中的 csv 模块来读取、写入和解析 CSV 数据。

读取 CSV 文件

使用 CSV.read 方法可以简便地读取一个 CSV 文件。该方法返回一个二维数组,其中每个子数组代表一行数据。

require 'csv'

rows = CSV.read('data.csv')
rows.each do |row|
  puts row.inspect
end

上面的代码将 data.csv 文件中的数据读入 rows 变量中,并将每一行数据打印到标准输出中。

解析 CSV 数据

使用 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 文件

使用 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 数据

使用 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 数据。