从文件中读入并创建嵌套表格

我有一个带有元素和它们被发现年份的txt文件,像氢1766年 氦1868年 等等。我需要读取文件并返回一个嵌套表格,代表来自文件的此信息,类似于 { { "氢", 1766 }, { "氦", 1868 }, ... { "溴", 1825 }, { "氪", 1898 } } 但是我目前只有名称和年份紧挨着它。目前为止我有这个

function read_elements(f_name)
    elements = {}
    f_name = io.open('elements.txt')
    for line in f_name:lines()do
        for word in string.gmatch(line, "%w+") do
            table.insert(elements,word)
        end
    end
    for key,value in pairs(elements) do
        print(value..",")
    end
    f_name:close()
end

有人告诉我要将每个对插入到自己的表中,并将这些表插入到较大的表中,但我真的不知道下一步该怎么做或如何操作。请帮忙

点赞
用户736889
用户736889

你只是创建了一个表格,然后将找到的每个单词都插入其中。你需要创建你的主表格,然后建立一个分别包括元素和年份的个人表格,然后将该个人表格插入到你的主表格中。

假设你的文件格式如下:

hydrogen 1766
helium 1868
...

即每行一个元素,在你的第一个 for 语句的 f_name:lines() 中,你应该创建一个新的表格,将找到的每个单词(将有两个)添加到一个新的表格中,然后将其添加到你的大表格中:

function read_elements(f_name)
    local elements = {}
    f_name = io.open('elements.txt')
    for line in f_name:lines()do
        local element = {}
        for word in string.gmatch(line, "%w+") do
            table.insert(element,word)
        end
        table.insert (elements, element)
    end
    f_name:close()
    for _, element in ipairs (elements) do
        for element, year in ipairs (element) do
            print (element, year)
        end
    end
    return (elements)
end

如果你的文本文件格式不同(可能只是一个顺序列表),你可能需要调查每个其他单词是否始终是年份或元素的假设,从而设置/取消设置布尔标志。

2018-03-16 03:06:47