我试图弄清楚使用Lua从文件中解析数据的最有效方法是什么。例如,假设我有一个类似这样的文件(example.txt):
0, Data
74, Instance
4294967295, User
255, Time
如果我只想要"之前的数字,"我想到了几种获取信息的方法。我首先使用f = io.open(example.txt)
获取数据,然后使用for循环来解析f
的每一行。这导致了我的问题的核心。最有效的方法是什么?
在for循环中,我可以使用这些方法中的任何一个来获取逗号之前的#:
line.find(regex)
line:gmatch(regex)
line:match(regex)
或Lua' split function
有没有人为这些/其他方法运行速度测试,他们可以指出这是快速解析的方法?如果你能说出解析小文件和大文件的速度,那么奖励积分。
答案 0 :(得分:2)
您可能想要使用line:match("%d+")
。
line:find
也会起作用,但返回的比你想要的要多。
line:gmatch
不是您所需要的,因为它旨在匹配字符串中的多个项目,而不仅仅是一个项目,并且意味着在循环中使用。
至于速度,您必须自己进行测量。从下面的简单代码开始:
for line in io.lines("example.txt") do
local x=line:match("%d+")
if x~=nil then print(x) end
end