将csv读入哈希

时间:2011-01-11 19:08:56

标签: lua

您好我是一名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中构建我的新表?

1 个答案:

答案 0 :(得分:3)

表格的分配看起来很好。问题是打印表格内容时:您使用了ipairs,您应该使用pairs。迭代数组(一个表中的键是顺序数1,2,3,...)时使用ipairs,并且可以在任何表上使用pairs来检索键/价值对,像这样:

for k,v in pairs(myfields) do print(k,v) end