面试题答案
一键面试在Ruby中,处理CSV文件可以使用标准库csv
。以下以将CSV数据转换为数组和哈希表为例:
转换为数组
require 'csv'
data = []
CSV.foreach('超大文件.csv', headers: true) do |row|
data << row.to_a
end
解释:
require 'csv'
:引入CSV处理库。CSV.foreach('超大文件.csv', headers: true)
:逐行读取CSV文件,headers: true
表示第一行是表头。row.to_a
:将每一行数据转换为数组,data << row.to_a
将转换后的数组添加到data
数组中。
转换为哈希表
require 'csv'
data = []
CSV.foreach('超大文件.csv', headers: true) do |row|
hash = {}
row.each do |header, value|
hash[header] = value
end
data << hash
end
解释:
- 同样先引入
csv
库。 - 逐行读取CSV文件,针对每一行:
- 创建一个空的哈希表
hash
。 - 使用
row.each
遍历每一列,将表头作为键,对应的值作为值,填充哈希表。 - 最后将填充好的哈希表添加到
data
数组中。这样data
数组中每个元素都是一个哈希表,代表一条用户记录。
- 创建一个空的哈希表