如何在Torch/Lua中从文件中加载表格?

3
非常简单的操作。我有一个包含N行6列表格的文件,我想在我的Torch / Lua脚本中加载它到一个表格中。
数据文件如下:
chromNameA  startA  endA    chromNameB  startB  endB
chr22   16867980    16868130    chr22   16669675    16678717
chr22   16867980    16868130    chr22   16685348    16701095
chr22   16867980    16868130    chr22   16723869    16739035
chr22   16867980    16868130    chr22   16748016    16750787
chr22   16867980    16868130    chr22   16750788    16755877

我希望将其加载到一个表格中,例如table[1][2]包含16867980等。

该怎么做?谢谢。

1个回答

2

你可以使用string.match将每一行解析为表格,使用io.lines迭代文件中的每一行:

-- script.lua
local t, patt = {}, ("(%w+)%s+"):rep(5).."(%w+)"
for line in io.lines() do
  if not line:find("^chromNameA") then
    table.insert(t, {line:match(patt)})
  end
end
print(#t, t[1][1], t[1][6]) -- prints `5 chr22 16678717`

-- file.txt
chromNameA  startA  endA    chromNameB  startB  endB
chr22   16867980    16868130    chr22   16669675    16678717
chr22   16867980    16868130    chr22   16685348    16701095
chr22   16867980    16868130    chr22   16723869    16739035
chr22   16867980    16868130    chr22   16748016    16750787
chr22   16867980    16868130    chr22   16750788    16755877

-- execution: lua script.lua <file.txt

您可以使用以下命令启动脚本:lua script.lua <file.txt,然后它应该生成一个您想要的结构表格。请注意保留HTML标签。

谢谢,但它不起作用。对于最后一行,错误日志显示:“尝试索引空值”。什么是“io”? - DavideChicco.it
我测试了解决方案,它可以在您发布的数据文件上运行。我已经更新了答案,包括文件的确切内容和执行命令。您可以在循环中添加 print(line:match(patt)) 来查看读取和解析的内容。 - Paul Kulchenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接