Lua - 查找/删除 .csv 文件中的重复行以创建纯/唯一列表

我有一个由多个 .csv 源合并而成的 3000+ 行 .csv 文件 - 下面是内容示例。

NEC;    35;     -1;     10
RC5;    0;      -1;     12
Panasonic;      176;    0;      61
RC5;    21;     -1;     1
RC5;    21;     -1;     1
NEC;    0;      -1;     0
RECS80; 4;      -1;     30
NEC;    1;      249;    3
Denon;  1;      -1;     40
NEC;    132;    60;     33

请问有人知道如何从上面的内容中创建一个只具有唯一行的新的 .csv 文件吗?

如果可能的话,请问有人可以继续解释如何在现有的 .csv 文件和 Lua 数组/表创建阶段中执行此操作 - 非常感谢!

FYI - 我的新 Lua 代码使用循环并结合以下内容填充 .csv

local info = table.concat ({protocol, D, S, F}, '; ')
点赞
用户1442917
用户1442917

最简单的方法可能是逐行阅读,跟踪已经查看的行而不解析它们:

local csv = assert(io.open("test.csv", "r"))
local lines = {}
for line in csv:lines() do
  if not lines[line] then
    print(line)
    lines[line] = true
  end
end

这将在标准输出中以与文件中出现的相同顺序打印出 text.csv 的所有唯一行。

如果您的系统支持 uniqsort 结合使用,则还可以使用它们。

如果您需要对表中的行应用相同的逻辑,则应该使用以下代码(假设行在表 tt 中):

local lines = {}
for _, line in ipairs(tt) do
  if not lines[line] then
    print(line)
    lines[line] = true
  end
end
2020-12-26 20:51:20