reading a csv into a hash
Hello I am a lua beginner and am trying to loop through a CSV one line at a time. I would like to store each line read from the CSV in a hash table. The current state of the experimental code is as follows:-
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!
The ParseC开发者_如何转开发SVLine is from the http://lua-users.org/wiki/LuaCsv. However the issue is the assignment to myfields[v]. Looking at the various docs the syntax of what is allowed within the [] is rather odd and it appears Lua does not allow the use of a symbol here. How do construct my new table in myfields?
The assignment to the table looks fine. The problem is when printing the table contents: You used ipairs where you should have used pairs. ipairs is used when iterating over an array (a table where the keys are the sequential numbers 1,2,3,...), and pairs can be used over any table to retrieve the key/value pairs, like this:
for k,v in pairs(myfields) do print(k,v) end
加载中,请稍侯......
精彩评论