You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Ruby 3.1.2中根据指定邮箱获取CSV文件中的单行数据

基于Ruby 3.1.2实现按邮箱匹配CSV整行数据

给定如下CSV文件:

make,model,color,doors,email
dodge,charger,black,4,practice1@whatever.com
ford,focus,blue,5,practice2@whatever.com
nissan,350z,black,2,practice3@whatever.com
mazda,miata,white,2,practice4@whatever.com
honda,civid,brown,4,practice5@whatever.com
corvette,stingray,red,2,practice6@whatever.com
ford,fiesta,blue,5,practice7@whatever.com
bmw,m4,black,2,practice8@whatever.com
audi,a5,blue,2,practice9@whatever.com
subaru,brz,black,2,practice10@whatever.com
lexus,rc,black,2,practice11@whatever.com

以下是两种实现方式,可根据文件大小选择:

方式1:逐行遍历匹配(适合大文件)

无需加载整个文件到内存,内存占用低,适合处理大容量CSV:

require 'csv'

# 获取用户输入的目标邮箱
print "请输入要查询的邮箱:"
target_email = gets.chomp

# 逐行读取CSV并匹配邮箱
CSV.foreach('your_file.csv', headers: true) do |row|
  if row['email'] == target_email
    puts row.to_csv.strip
    exit # 找到匹配项后直接退出,减少不必要的遍历
  end
end

# 未找到匹配时提示
puts "未找到对应邮箱的记录"

方式2:预加载为哈希表(适合小文件)

先将所有记录存入哈希,后续查询更高效,适合数据量较小的CSV:

require 'csv'

# 构建邮箱到整行记录的映射
email_map = {}
CSV.foreach('your_file.csv', headers: true) do |row|
  email_map[row['email']] = row.to_csv.strip
end

# 获取用户输入
print "请输入要查询的邮箱:"
target_email = gets.chomp

# 查询并输出结果
puts email_map.fetch(target_email, "未找到对应邮箱的记录")

注意事项

  • 将代码中的your_file.csv替换为实际的CSV文件路径
  • 若CSV使用非逗号分隔符,可在CSV.foreach中添加col_sep: '指定分隔符'参数调整
  • gets.chomp用于去除输入末尾的换行符,避免因格式问题导致匹配失败

内容的提问来源于stack exchange,提问作者burner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:10:33