您好我是一名lua初学者,我一次尝试循环使用一行CSV。我想将从CSV中读取的每一行存储在哈希表中。实验代码的当前状态如下: -
local fp = assert(io.open ("fields.csv")) local line=fp:read() local headers=ParseCSVLine(line,",") -- for i,v in ipairs(headers) do print(i,v) end -- this print outs the CSV header nicely -- now read the next line from the file and store in a hash local line=fp:read() local cols=ParseCSVLine(line,",") local myfields={} for i,v in ipairs(headers) do -- print( v,cols[i]) -- this print out the contents nicely myfields[v]=cols[i] ------ this is where things go bad ----- end for i,v in ipairs(myfields) do print(i,v) end ------ this print nothing!
ParseCSVLine来自http://lua-users.org/wiki/LuaCsv。然而问题是对myfields的分配[v]。查看各种文档,[]中允许的语法相当奇怪,看起来Lua不允许在这里使用符号。如何在myfields中构建我的新表?
答案 0 :(得分:3)
表格的分配看起来很好。问题是打印表格内容时:您使用了ipairs
,您应该使用pairs
。迭代数组(一个表中的键是顺序数1,2,3,...)时使用ipairs
,并且可以在任何表上使用pairs
来检索键/价值对,像这样:
for k,v in pairs(myfields) do print(k,v) end