2013-10-23 71 views
0

新紅寶石csv文件的行,試圖找出如何做到這一點:追加行的基礎上,第一場在另一行

我有數據這樣的.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行末尾的一個額外字段。

+1

它可能會更好地顯示你想要的輸出應該是什麼樣子。 – AGS

+1

你可以發佈你迄今爲止寫的代碼嗎? –

+0

我們需要看到您的代碼:「關於您編寫​​的代碼問題的問題必須在問題本身中描述具體問題 - 幷包含有效代碼以再現問題本身。請參閱http://SSCCE.org以獲取指導。」 –

回答

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"]]