将.csv文件转换为Lua中的2D表

问题描述

正如标题所示,我想知道如何将Lua中的.csv文件转换为2D表。

例如,假设我有一个如下所示的.csv文件

0,0
0,-1,0

我如何将其转换为类似的内容

local example_table = {{0,0},{0,0}}

我们将非常感谢您的帮助。

解决方法

1。不要小看CSV。

如果需要通用它,请获取适当的CSV解析库。如果您自己进行解析,则会错过许多可能发生的特殊情况,因此,它仅适用于您知道数据并会注意到是否出现问题的情况。

2。更改文件

如果要使用等效的 Lua代码作为输出,假设您正在Lua中进行解析,则可以执行以下操作:

local input = get_input_somehow() -- probably using io.open,etc.

local output =
"local example_table = {\n"
..
input:gmatch("[^\n]*",function(line)
   return "{" .. line .. "};"
end)
..
"\n}"

save_output_somehow(output) -- Probably just write to a new file

3。将CSV解析为表格

如果要将CSV文件直接读取到Lua表中,可以改成这样:

local input = get_input_somehow() -- probably using io.open,etc.

local output = {}
input:gmatch("[^\n]",function(line)
   local row = {}
   table.insert(output,row)
   line:gmatch("[^,]",function(item)
      table.insert(row,tonumber(item))
   end)
end)

do_something_with(output) -- Whatever you need your data for