Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua——解析.txt文件中的文本并存储值_Lua - Fatal编程技术网

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

Lua——解析.txt文件中的文本并存储值,lua,Lua,我尝试运行代码时收到以下错误: lua:readFile.lua:7: attempt to call method 'split' (a nil value) 我正在自学Lua并做一些练习。我试图解析文本文件中的各个值,然后对它们进行处理。我可以打开文件,如果我不尝试解析这些值,我可以打印内容。 我分别尝试过: dollars, tickets = line:split(" ") dollars, tickets = line:split("(%w+)", " ") 还有其他几个

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

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
10028000
5035750
2518750

很明显,我在分割方法中遗漏了一些东西,但我不知道该怎么做


注意。

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

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

如果您只想从文件中读取数字,而不想强制每行数字为两个,则可以使用以下代码:

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

我想我不明白。从Lua wiki页面[链接]。这里的split函数不是我应该使用的吗?在任何情况下,我都使用了您提供的代码,它返回了我所需要的,所以谢谢您。您可以使用这里描述的拆分函数,但您需要手动将其添加到字符串库中。在该页面的大约1/4处,它们显示了一些不同的split实现。您可以将其中一个复制到Lua文件中,并将函数放入字符串表:string.split=。只需将Lua文件插入脚本中即可。请确保您选择了一个与您正在使用的Lua版本兼容的拆分实现。谢谢。您提供的代码也可以工作。我已经把迈克的答案标为答案了,但我还没有冷静到可以投你的一票。无论如何,非常感谢。