【发布时间】:2019-11-30 19:10:56
【问题描述】:
我正在尝试创建一个 lua 实用程序来读取逗号分隔格式的电子表格。
这是逗号分隔数据的示例:
Test Mode,Mode Pass,Parameter1,Parameter2,Parameter3
1,1,M1p1p1,M1p1p2,M1p1p3
1,2,M1p2p1,M1p2p2,M1p2p3
1,3,M1p3p1,M1p3p2,M1p3p3
2,1,M2p1p1,M2p1p2,M2p1p3
2,2,M2p2p1,M2p2p2,M2p2p3
Index 列和 Data 列的区别在于 Index 列使用列的索引创建一个子表数组,其中 Data 列将是表对象。
从上面的例子:
myCSVFileTable.TestMode[1].ModePass[2].Parameter2 == M1p2p2
myCSVFileTable.TestMode[2].ModePass[1].Parameter3 == M2p1p3
我正在尝试创建的函数如下所示:
constructTable(file, numIndexColumns)
用户指定索引列的数量。
到目前为止,我正在使用以下代码读取 CSV 数据并将其放入由 CSV 文件行索引的表中。
local constructTable = function(filename, numIndexColumns)
local tbl = csv_to_indexed(filename)
local ret_tbl = {}
assert(tbl[1] ~= nil)
local column_names = tbl[1]
local ret_tbl = {}
assert(numIndexColumns < #column_names,
"Not enough total columns for the specified number of index columns",
"constructTable")
end
所以 tbl 最终看起来像:
tbl sequence[6]
[1] sequence[6]
[1] "Test Mode"
[2] "Mode Pass"
[3] "Parameter1"
[4] "Parameter2"
[5] "Parameter3"
[2] sequence[6]
[1] "1"
[2] "1"
[3] "M1p1p1"
[4] "M1p1p2"
[5] "M1p1p3"
[3] sequence[6]
[1] "1"
[2] "2"
[3] "M1p2p1"
[4] "M1p2p2"
[5] "M1p2p3"
[4] sequence[6]
[1] "1"
[2] "3"
[3] "M1p3p1"
[4] "M1p3p2"
[5] "M1p3p3"
[5] sequence[6]
[1] "2"
[2] "1"
[3] "M2p1p1"
[4] "M2p1p2"
[5] "M2p1p3"
[6] sequence[6]
[1] "2"
[2] "2"
[3] "M2p2p1"
[4] "M2p2p2"
[5] "M2p2p3"
目前,我不确定如何构建示例中定义的 myCSVFileTable。我想我需要某种递归函数来做到这一点。但我似乎无法在我的脑海中到达那里。
【问题讨论】:
标签: lua