从文件读入 table 共 table 秒

Read in from a file into table of tables

所以我有这个 txt 文件,里面有元素和它们被发现的年份,比如氢 1766 氦气 1868 还有很多。我必须读取文件和 return table of tables,像这样从文件中重新设置此信息 { { "Hydrogen", 1766 }, { "Helium", 1868 }, ... { "Bromine", 1825 }, { "Krypton", 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   

我被告知要将每一对放在自己的 table 中,并将那些 table 插入更大的 table,但我真的不知道该怎么做下一步或如何做。请帮忙

您只是在创建一个 table,并将找到的每个单词插入其中。您需要创建您的主 table,然后构建一个包含元素和年份的个体 table,并将该个体 table 插入您的主 table.

假设您的文件格式为:

hydrogen 1766 
helium 1868
...

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

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 

如果你的文本文件是不同的格式(可能只是一个顺序列表,你可能想要调查 setting/unsetting 每隔一个单词的布尔标志,假设每个其他单词总是年份或元素。