我正在尝试使用Ruby操作csv文件,它会将一行字符串分成不同的列。从'Part#'开始创建一个列然后移过逗号到'Quantity'并在它旁边创建第二列,依此类推......我预计我将需要利用split方法创建一个数组。这是最好的方法,如何将数组粘贴到Excel中,以便创建行?
我希望标题下面的行包含实际数据,它分为S-001,1,[Mela]等。
以下是csv的示例:
Sheet Goods
Part#,Quantity,Description,Length(L),Width(W),Thickness(T),Square Foot (per),Square Foot (total),Total Length (Feet),Material,
S-001,1, [Mela] Fridge Sides, 30",12",0 5/8",2.5,2.5,2.5,Not assigned,
S-002,1, [Mela] Fridge Sides#1,30",12",0 5/8",2.5,2.5,2.5,Not assigned,
S-003,1, [Mela] Fridge TB,32 1/4", 30",0 5/8",6.72,6.72,2.69,Not assigned,
S-004,1, [Mela] Fridge TB#1,32 1/4", 30",0 5/8",6.72,6.72,2.69,Not assigned,
S-005,1, [Mela] Fridge back,32 3/4",11 1/4",0 5/8",2.56,2.56,2.73,Not assigned,
任何帮助将不胜感激!
编辑:
这是数据在完成时的样子:
Sheet Goods
Pat# Quantity Description Length (L) Thickness (T) Square Foor (per) Square Foot (total) Total Length (Feet) Material
S-001 1 [Mela] Fridge Sides 30 5/8 2.5 2.5 2.5 Not assigned
删除逗号并将逗号之间的数据放入单独的列中。
标记
答案 0 :(得分:1)
首先,使用库来完成任务:CSV。其次,按行名称(而不是无意义的数字)索引行非常方便。一个例子(你可以获得所有宽度):
require 'csv'
rows = CSV.open("data.csv")
name, headers = rows.take(2)
quantities = rows.map do |row_values|
row = Hash[headers.zip(row_values)]
# here you specific processing
row["Width(W)"]
end
如Jim所述,您的文字无效CSV,双引号保留。