我的问题与此类似。基本上有一个 CSV 文件,但有重复的 PID,但我不能这样做.uniq
:
File.open("new.csv", "w+") { |file| file.puts File.readlines("old.csv").uniq }
因为线条不同。我是 Ruby 新手,想知道是否有一种优雅的方法可以仅基于第一列删除整行?还是我必须遍历每一行并查找重复的 PID?
我的问题与此类似。基本上有一个 CSV 文件,但有重复的 PID,但我不能这样做.uniq
:
File.open("new.csv", "w+") { |file| file.puts File.readlines("old.csv").uniq }
因为线条不同。我是 Ruby 新手,想知道是否有一种优雅的方法可以仅基于第一列删除整行?还是我必须遍历每一行并查找重复的 PID?
您可以传递uniq
一个块来指定它将删除重复元素的要求。
File.open("old.csv", "w+") do |file|
file.puts File.readlines("csv.csv").uniq! { |s| s[/^\d+/ ] }
end
如uniq
文档中所述。
/^\d+/
用适合您的任何人替换正则表达式。
假设 pid 是第二列:
CSV.open('new.csv', 'w') do |csv|
CSV.read('old.csv').uniq{|x| x[1]}.each do |row|
csv << row
end
end