parsing - 如何在Lua中解析一系列带有空格的字符串
问题描述
我正在尝试解析一个 txt 文件,该文件的格式为Lua中的主机名 IP mac-address格式。所有三个用空格分隔,尝试然后使用 Lua 将其存储到表中。
我尝试过使用 :match 函数执行此操作,但看不到让它工作。
function parse_input_from_file()
array ={}
file = io.open("test.txt","r")
for line in file:lines() do
local hostname, ip, mac = line:match("(%S+):(%S+):(%S+)")
local client = {hostname, ip, mac}
table.insert(array, client)
print(array[1])
end
end
它继续在内存中打印每个键/值的存储位置(我认为)。
我确信这是一个相对简单的修复,但我似乎看不到它。
解决方案
如果主机名、ip 和 mac 用空格分隔,则您的模式可能不使用冒号。我添加了一些更改以将捕获存储在客户端表中。
function parse_input_from_file()
local clients ={}
local file = io.open("test.txt","r")
for line in file:lines() do
local client = {}
client.hostname, client.ip, client.mac = line:match("(%S+) (%S+) (%S+)")
table.insert(clients, client)
end
return clients
end
for i,client in ipairs(parse_input_from_file()) do
print(string.format("Client %d: %q %s %s", i, client.hostname, client.ip, client.mac))
end
或者:
local client = table.unpack(line:match("(%S+) (%S+) (%S+)"))
然后hostname
是client[1]
不是很直观。
推荐阅读
- xcode - 如何#include
在 Xcode 10 中 - javascript - JavaScript:将具有父键的对象数组转换为父/子树(包括没有父的对象)
- python-requests - 使用 Python Requests 方法抓取 Instagram
- angular - 我有一个新项目,但是执行 ng serve 时出现错误
- c++ - 为什么 QJsonValue::toDouble 中存在精度损失?
- python - 输入用户名和密码 = ValueError: int() 以 10 为底的无效文字:''
- android - android Fragment 中的 onAttach() 和 isAdded() 有什么区别?
- css - 如何根据长度截断 a,并添加省略号(...)
- mysql - mysql - 在所有站点中查找唯一用户
- python - 将变量(非模型字段)传递给 django rest 框架中的序列化程序