Ruby:
处理CSV文件

如何操作:

Ruby 默认包含 CSV 库,这简化了从 CSV 文件读取和写入的操作。以下是如何利用这一点来完成常见任务:

读取 CSV 文件

要从 CSV 文件读取,你首先需要引入 CSV 库。然后,你可以迭代行或将它们读入数组。

require 'csv'

# 将每一行读作一个数组
CSV.foreach("data.csv") do |row|
  puts row.inspect
end

# 每行的输出可能看起来像这样:["data1", "data2", "data3"]

写入 CSV

写入 CSV 文件也很直接。你可以向现有文件追加内容或创建新文件进行写入。

require 'csv'

CSV.open("output.csv", "wb") do |csv|
  csv << ["header1", "header2", "header3"]
  csv << ["value1", "value2", "value3"]
end

# 这会创建或覆盖 'output.csv',并使用指定的标题和值。

解析 CSV 字符串

有时你需要直接从字符串解析 CSV 数据。以下是如何做到这一点:

require 'csv'

data = "name,age,city\nJohn Doe,29,New York\nJane Doe,31,Chicago"
csv = CSV.parse(data, headers: true)

csv.each do |row|
  puts "#{row['name']} - #{row['age']} - #{row['city']}"
end

# 预期输出:
# John Doe - 29 - New York
# Jane Doe - 31 - Chicago

使用 SmarterCSV

对于更复杂的 CSV 任务,SmarterCSV gem 可以是一个有价值的工具。首先,安装 gem:

gem install smarter_csv

然后,你可以使用它来处理大文件或执行更复杂的解析和操作:

require 'smarter_csv'

options = {}
data = SmarterCSV.process('large_data.csv', options)

data.each do |hash|
  puts hash.inspect
end

# 这将读取 'large_data.csv' 并根据标题将每行输出为一个 hash。

总而言之,Ruby 的内置 CSV 库,连同第三方 gem 如 SmarterCSV,提供了强大的支持来处理 CSV 数据,允许有效地进行数据处理和操作任务。