首页 > 解决方案 > LUA - 'concat' 表中索引 1 处的无效值(表)

问题描述

我正在尝试使用 table.concat 选项查看我在网上找到的 csv 到表转换的结果,但我总是收到错误“'concat' 表中索引 1 处的无效值(表)”

这是源 csv 文件的摘录。

created_at,entry_id,conservatory,kitchen,hallway,living_toom,front_room,lean_to,outside,cabin
2021-03-03 20:17:30 UTC,3986,18.5,21.1,20,20,19.4,16.6,7.7,10.10
2021-03-03 20:47:30 UTC,3987,18.5,21.1,20,20,19.3,16.6,7.5,9.80
2021-03-03 21:17:30 UTC,3988,18.5,21.1,20,20,19.4,16.4,7.2,9.80
2021-03-03 21:47:30 UTC,3989,18.5,20.9,20,20,19.1,16.2,7.1,9.60

这是我的代码,我错过了什么?

-- csv to Lua table converter

local csv={}
for line in io.lines('/home/pi/shared/feed-watts-12h.csv') do
    table.insert(csv, {})
    local i=1
    for j=1,#line do
        if line:sub(j,j) == ',' then
            table.insert(csv[#csv], line:sub(i,j-1))
            i=j+1
        end
    end
    table.insert(csv[#csv], line:sub(i,j))
end

print(csv)

local out = table.concat(csv," - ")
print(out)

完整的错误信息..

lua: home/pi/shared/convert_csv_to_table.lua:30: invalid value (table) at index 1 in table for 'concat'
stack traceback:
        [C]: in function 'concat'
        home/pi/shared/convert_csv_to_table.lua:30: in main chunk
        [C]: ?

标签: lua

解决方案


例如,如果您想打印该表以进行调试,只需运行一个循环。

for _,line in ipairs(csv) do print(table.concat(line)) end

阅读 CSV 也是一个很好的机会,让您熟悉字符串模式和 Lua 的字符串库。它提供的远不止string.sub.


推荐阅读