gpt4 book ai didi

ruby - 删除文件中的行 - Ruby

转载 作者:数据小太阳 更新时间:2023-10-29 07:22:42 24 4
gpt4 key购买 nike

在特定行中存在特定值的情况下,从 ruby​​ 中的 CSV 文件中删除行的巧妙方法是什么?

这是一个文件示例:

350 lbs., Outrigger Footprint, 61" x 53", Weight, 767 lbs., 300-2080
350 lbs., Outrigger Footprint, 61" x 53", Weight, 817 lbs., 300-2580
350 lbs., Outrigger Footprint, 61" x 53", Weight, 817 lbs., 300-2580
350 lbs., Outrigger Footprint, 69" x 61", Weight, 867 lbs., 300-3080
350 lbs., Outrigger Footprint, 69" x 61", Weight, 867 lbs., 300-3080

理想情况下,我想要一个只用这个创建的新文件:

350 lbs., Outrigger Footprint, 61" x 53", Weight, 767 lbs., 300-2080
350 lbs., Outrigger Footprint, 61" x 53", Weight, 817 lbs., 300-2580
350 lbs., Outrigger Footprint, 69" x 61", Weight, 867 lbs., 300-3080

当给出这个时:

300-2580
300-3080
300-2080

所以我知道我可以使用 sort filename|uniq -d 来做到这一点,但我正在尝试学习 Ruby(有点痛苦)。

提前致谢,中号

最佳答案

您可以使用它来获取 csv 文件中数组中的唯一行

File.readlines("file.csv").uniq
=> ["350 lbs., Outrigger Footprint, 61\" x 53\", Weight, 767 lbs., 300-2080\n", "350 lbs., Outrigger Footprint, 61\" x 53\", Weight, 817 lbs., 300-2580\n", "350 lbs., Outrigger Footprint, 69\" x 61\", Weight, 867 lbs., 300-3080\n"]

要将其写入新文件,您可以以写入模式打开文件,将其写入文件:

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.", " Outrigger Footprint", " 61\" x 53\"", " Weight", " 817 lbs.", " 300-2580"], .....]
mapped_columns[0][5]
=> "300-2080"

如果您想要更多功能,最好安装 FasterCSV gem .

关于ruby - 删除文件中的行 - Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7156825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com