2

我正在尝试使用 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

其中逗号被删除,逗号之间的数据被放入单独的列中。

标记

4

1 回答 1

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

正如吉姆所指出的,您的文本不是有效的 CSV,双引号被保留。

于 2013-03-24T00:00:05.563 回答