Lua 中将 .csv 文件转换为二维表格

正如标题所示,我想知道如何在 Lua 中将 .csv 文件转换为二维表格。

例如,我有一个长这样的 .csv 文件:

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,0
0,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,0
0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0
0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0
0,0,-1,-1,-1,-1,-1,-1,0,0,0,0,-1,-1,-1,-1,-1,-1,0,0
0,0,0,-1,-1,-1,-1,0,0,0,0,0,0,-1,-1,-1,-1,0,0,0
0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,-1,-1,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

我该如何将它转换为这样的格式?

local example_table = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,0},
{0,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,-1,-1,-1,-1,-1,0},
{0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0},
{0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0},
{0,0,-1,-1,-1,-1,-1,-1,0,0,0,0,-1,-1,-1,-1,-1,-1,0,0},
{0,0,0,-1,-1,-1,-1,0,0,0,0,0,0,-1,-1,-1,-1,0,0,0},
{0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,-1,-1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}

非常感谢您的帮助。

点赞
用户4984564
用户4984564

1. 不要低估 CSV。

如果你需要一个通用的解析库,获取一个合适的 CSV 解析库。如果你自己解析,你将会错过许多特殊情况,这个只适用于你了解数据的情况下,如果出现问题,你会注意到。

2. 更改文件

如果你想要 Lua 代码 输出,假设你正在使用 Lua 进行解析,你可以这样做:

local input = get_input_somehow() -- 可能使用 io.open 等方式获取输入。

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

save_output_somehow(output) -- 可能只需写入新文件即可

3. 将 CSV 解析为表格

如果你想直接读取 CSV 文件到 Lua 表格中,你可以像这样做:

local input = get_input_somehow() -- 可能使用 io.open 等方式获取输入。

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) -- 无论你需要用数据做什么
2020-11-06 14:00:37