在Lua中解析大型.txt文件,而不需要使用表格。
2013-7-23 6:50:9
收藏:0
阅读:126
评论:2
我对Lua相当新,虽然我使用过其他类似的语言。到目前为止,我已经花了8个小时尝试分析一个大的文本文件,但是没有任何结果。
所涉及的文件看起来像这样:(但有数千行)
A|KLAX|LOS ANGELES INTERNATIONAL|33942522|-118407161|125
我已经让用户输入了KLAX变量,但我的目标是获取所讨论的行的这部分内容,而不使用表格:33942522|-118407161
例如
APTDEP_DATA = 33942522|-118407161
甚至将整个行作为字符串从.txt文件中获取?
例如
APTDEP_DATA = A|KLAX|LOS ANGELES INTERNATIONAL|33942522|-118407161|125
非常感谢。8个小时后,知道我正在尝试做的事情是否可能会很好。(我看到的每个教程都是将数据解析成表格)
我尝试了很多类似的方法:

NZAA也是我正在寻找的代码。所以不要因KLAX而感到困惑。我只是试图得到一个结果。
(我无法正确显示代码,对于链接我感到抱歉)
点赞
用户234175
从您的示例片段中可以看出,问题出在您使用的地方:
AP_LAT = string.match(file, "A|NZAA")
在字符串值上执行模式匹配,而 不是 file 句柄。 更适当的做法是:
AP_LAT = string.match(line, "A|NZAA")
以下代码逐行处理输入文件,并将其解析为相应的字段:
file = assert(io.open("Airports.txt", "r"))
for line in file:lines() do
local fields = { line:match "(%w+)|(%w+)|([%w ]+)|([%d-]+)|([%d-]+)|([%d-]+)" }
-- do something useful with it
print(fields[4], fields[5]) -- the 2 numeric fields you're interested in
end
file:close()
如果您坚持不使用表,则可以仅将匹配放入变量中,如下所示:
local first, second, third, etc = line:match "(%w+)|(%w+)|([%w ]+)|([%d-]+)|([%d-]+)|([%d-]+)"
注意:随意修改/完善模式以适应您的需要。 这只是一个例子,用于说明该思想。
2013-07-23 07:11:24
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
要从文件中读取行,请使用
io.lines:for line in io.lines(filename) do --进行某些处理 end要从行中获取特定部分,使用模式匹配。我不确定您要从问题中获取什么。