0

Ruby 新手,试图弄清楚如何做到这一点:

我有一个 .csv 文件,其中包含如下数据:

D1, Name, Address, Data, Date
D2, 123
D2, 6413
D2, 1207
D1, Name, Address, Data, Date
D2, 789
D1, Name, Address, Data, Date

...等等。

我已经到了可以让它在 D1 行之后将 D2 行中的数据附加到它后面的 D1 行的末尾的地步,但它忽略了多个 D2 行。基本上,我需要将每个 D1 行之后的所有 D2 行的值附加为 D1 行末尾的一个额外字段。

4

1 回答 1

0

我在这里使用一个字符串作为输入,但您应该能够对 CSV 文件执行相同的操作。对于每一行,检查第一个元素是否包含 D1。如果是,则将该行添加到结果中,如果不是,则将最后一个元素添加到结果的最后一个元素中。

string = "D1, Name, Address, Data, Date
D2, 123
D2, 6413
D2, 1207
D1, Name, Address, Data, Date
D2, 789
D1, Name, Address, Data, Date"

lines, result = string.tr(',', '').lines.map(&:split), []
lines.each{|line| line.first['D1'] ? result << line : result.last << line.last }
p result #=> [["D1", "Name", "Address", "Data", "Date", "123", "6413", "1207"], ["D1", "Name", "Address", "Data", "Date", "789"], ["D1", "Name", "Address", "Data", "Date"]]
于 2013-10-23T21:33:36.997 回答