如何使用 LUA 解析配置文件(一种 CSV 格式)

我在小型 ESP8266 芯片上使用 LUA,尝试解析一个类似下面例子的文本字符串。我对 LUA 很陌生,在这个论坛上尝试了许多类似的脚本。

data="
-- 要解析的字符串\r\n
Tiempo1,20\r\n
Tiempo2a,900\r\n
Hora2b,27\r\n
Tiempo2b,20\r\n
Hora2c,29\r\n
Tiempo2c,18\r\n"

我的目标是解析字符串,并返回所有配置对(名称/值)。 如果需要,我可以修改配置文件的语法,因为它是由我创建的。 我一直在尝试类似这样的代码:

var1,var2 = data:match("([Tiempo2a,]), ([^,]+)")

但是它返回 nil 以及 nil。我认为我做错了很多事情。

非常感谢您的任何帮助。

点赞
用户7504558
用户7504558

你需要使用 gmatch 并解析出不包含行尾的非可打印字符(\r\n)值或使用 %d+

local data=[[
-- 待解析的字符串
Tiempo1,20
Tiempo2a,900
Hora2b,27
Tiempo2b,20
Hora2c,29
Tiempo2c,18]]

local t = {}
for k,v in data:gmatch("(%w-),([^%c]+)") do
   t[#t+1] = { k, v }
   print(k,v)
end
2021-06-26 17:41:37