0Pricing
Ruby Academy · 课时

处理 CSV

csv 库

处理 CSV 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。

什么是 CSV

CSV(逗号分隔值)以纯文本形式存储表格数据,每行对应一条记录,字段之间用逗号分隔。Ruby 的标准 csv 库可以读取和写入它。

require 'csv'
row = CSV.parse_line('Alice,30,Engineer')
p row

解析 CSV 字符串

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,可以自动将数字字段转换为整数或浮点数。

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)

快速检查

哪个选项可以让您通过列名称访问 CSV 字段,例如 row['age']?

回顾:使用 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」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。

「处理 CSV」这节课中我会学到什么?

csv 库 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Ruby Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「处理 CSV」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Ruby Academy 课中编写并运行代码吗?

能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 读取与写入 JSON
  2. 处理 CSV
  3. YAML 配置
  4. 选择格式
← 返回 Ruby Academy