Lua - 从文本文件解析并存储不同长度的值

时间:2013-05-19 23:13:11

标签: arrays parsing text lua

我是Lua编程的初学者,我一直在阅读文本文件并尝试将其存储在数组中。我知道已经存在这样的话题,但我想知道如何存储具有不同数量的行。例如:在文本文件中:

1 5 6 7
2 3
2 9 8 1 4 2 4

如何从中制作阵列?我发现的唯一解决方案是数量相同。

4 个答案:

答案 0 :(得分:3)

local tt = {}
for line in io.lines(filename) do
   local t = {}
   for num in line:gmatch'[-.%d]+' do
      table.insert(t, tonumber(num))
   end
   if #t > 0 then
      table.insert(tt, t)
   end
end

答案 1 :(得分:0)

假设您希望生成的 lua-table (非数组)看起来像:

mytable = { 1, 5, 6, 7, 2, 3, 2, 9, 8, 1, 4, 2, 4 }

然后你会这样做:

local t, fHandle = {}, io.open( "filename", "r+" )
for line in fHandle:read("*l") do
    line:gmatch( "(%S+)", function(x) table.insert( t, x ) end )
end

答案 2 :(得分:0)

您可以逐个字符地解析文件。当char是数字时,将其添加到缓冲区字符串中。如果是空格,请将缓冲区字符串添加到数组中,然后将其转换为数字。如果它是换行符,请使用空格,但也切换到下一个数组。

答案 3 :(得分:0)

t = {}
index = 1
for line in io.lines('file.txt') do 
    t[index] = {}
    for match in string.gmatch(line,"%d+") do 
        t[index][ #t[index] + 1 ] = tonumber(match)
    end 
    index = index + 1
end 

您可以通过

查看输出
for _,row in ipairs(t) do
    print("{"..table.concat(row,',').."}")
end 

显示

{1,5,6,7}
{2,3}
{2,9,8,1,4,2,4}