Lua - 解析.txt文件中的文本并存储值

时间:2012-09-21 12:12:19

标签: lua

我尝试运行代码时收到以下错误:

lua:readFile.lua:7: attempt to call method 'split' (a nil value) 

我正在教自己Lua并做一些练习。我试图解析文本文件中的各个值,然后用它们做一些事情。我可以打开文件,如果我不尝试解析值,我可以打印内容 我曾单独尝试过:

dollars, tickets = line:split(" ")  
dollars, tickets = line:split("(%w+)", " ")  

此外我还记不起其他几次迭代。

这是我的代码:

myfile = io.open("C:\\tickets.txt", "r")

if myfile then
print("True")    --test print
for line in myfile:lines() do
    local dollars, tickets = unpack(line:split(" "))
    print(dollars)
end
end
print("Done")  --test print
myfile:close()

以下是tickets.txt文件的完整内容:

250 5750
  100 28000
  50 35750
  25 18750

我显然在分裂方法中遗漏了一些东西,但我不知道知道什么。

问候。

2 个答案:

答案 0 :(得分:3)

如果您只想从文件中读取数字而不想在每行上强制执行它们,则可以使用以下代码:

while true do
  local dollars,tickets = myfile:read("*n","*n")
  if dollars==nil or tickets==nil then break end
  print(dollars)
end

答案 1 :(得分:2)

Lua中的字符串库不包含“拆分”功能。你必须自己实现一个(在Lua wiki上有例子),或者使用Lua的模式匹配功能来解析碎片。例如,你可以这样做:

local dollars, tickets = line:match("(%d+) (%d+)")