删除文件中的行 – Ruby
发布时间:2020-12-17 04:04:16 所属栏目:百科 来源:网络整理
导读:在特定行中存在特定值的 ruby中从CSV文件中删除行的巧妙方法是什么? 这是一个文件的例子: 350 lbs.,Outrigger Footprint,61" x 53",Weight,767 lbs.,300-2080350 lbs.,817 lbs.,300-2580350 lbs.,69" x 61",867 lbs.,300-3080350 lbs.,300-3080 理想情况下
在特定行中存在特定值的
ruby中从CSV文件中删除行的巧妙方法是什么?
这是一个文件的例子: 350 lbs.,Outrigger Footprint,61" x 53",Weight,767 lbs.,300-2080 350 lbs.,817 lbs.,300-2580 350 lbs.,69" x 61",867 lbs.,300-3080 350 lbs.,300-3080 理想情况下,我想要一个只用这个创建的新文件: 350 lbs.,300-3080 给这个时: 300-2580 300-3080 300-2080 所以我知道我可以用sort filename | uniq -d做到这一点,但我正在努力学习Ruby(有点痛苦). 提前致谢, 解决方法
您可以使用它来获取csv文件中数组中的唯一行
File.readlines("file.csv").uniq => ["350 lbs.,61" x 53",300-2080n","350 lbs.,300-2580n",69" x 61",300-3080n"] 要将其写入新文件,您可以在写入模式下打开文件,将其写入文件: File.open("new_csv","w+") { |file| file.puts File.readlines("csv").uniq } 为了比较值,您可以在“,”上使用split函数来访问每列,如下所示: rows = File.readlines("csv").map(&:chomp) # equivalent to File.readlines.map { |f| f.chomp } mapped_columns = rows.map { |r| r.split(",").map(&:strip) } => [["350 lbs."," Outrigger Footprint"," 61" x 53""," Weight"," 767 lbs."," 300-2080"],["350 lbs."," 817 lbs."," 300-2580"],.....] mapped_columns[0][5] => "300-2080" 如果您想要更多功能,最好安装FasterCSV gem. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |