在 LUA 中从文本文件生成列表/数组
我正在尝试将包含数字列表的文本文件(由 Python 脚本生成)处理到 LUA 脚本中。
文本文件包含以下内容(我在 Python 脚本中对其进行了格式化,以匹配 LUA 的列表语法):
{"0.0", "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1.0", "834.3", "1667.6", "2500.9", "3334.2", "4167.5", "5000.8", "5834.1", "6667.4", "7500.7", "8334.0", "9167.3", "10000.6", "10833.9", "11667.2", "12500.5", "13333.8", "14167.1", "15000.4", "15833.7", "16667.0", "17500.3", "18333.6", "19166.9", "20000.2", "20833.5", "21666.8", "22500.1", "23333.4", "24166.7", "25000.0", "22244444.44", "44463888.89", "66683333.33", "88902777.78", "111122222.22", "133341666.67", "155561111.11", "177780555.56", "200000000.0", }
但是,当我尝试在 LUA 中读取它时,首先我使用以下命令(其中“params.style_weight_list”是指先前生成的文本文件的链接):
print("SW LIST = ",params.style_weight_list)
它给了我这个结果:
SW LIST = {"0.0", "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1.0", "834.3", "1667.6", "2500.9", "3334.2", "4167.5", "5000.8", "5834.1", "6667.4", "7500.7", "8334.0", "9167.3", "10000.6", "10833.9", "11667.2", "12500.5", "13333.8", "14167.1", "15000.4", "15833.7", "16667.0", "17500.3", "18333.6", "19166.9", "20000.2", "20833.5", "21666.8", "22500.1", "23333.4", "24166.7", "25000.0", "22244444.44", "44463888.89", "66683333.33", "88902777.78", "111122222.22", "133341666.67", "155561111.11", "177780555.56", "200000000.0", }
但是当我尝试通过以下方式访问列表中的特定项时(frameIdx 是一个整数):
local neu_sw = params.style_weight_list[frameIdx]
它返回一个 nil 值,因此我认为我需要将导入的列表从字符串转换为 LUA 中的可用列表,但不知道如何做?有人有想法吗?
感谢 Nifim 和 Spar 的帮助!
感谢你的见解,我搞定了。如果可以的话,这里是我所做的:
将我的 Python 数组导出为一个文本文件(使用 Lua 扩展名,可能没有用,但帮助我在我的文件夹中保持清晰),每行只有一个值和没有其他格式元素。 "a" 是我的 Python 数组。
LUA_in = n*'{}\n'
LUA_format = LUA_in.format(*a)
LUA_file = open("sw.lua","w")
LUA_file.write(LUA_format)
然后在 Lua 中读取它,创建一个空表,每行添加一个值,并读取我需要的特定行。
sw_array = {}
for line in io.lines("sw.lua") do
table.insert(sw_array, line)
end
local cur_sw = sw_array[frameIdx+1]
其中 frameIdx 是我想要读取的特定值索引( "+1" 是因为 Lua 表从 1 开始计数,而 Python 从 0 开始)。
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?

当您不确定脚本中发生了什么时,可以始终调试代码。
使用
print和type查看您拥有的值及其类型。使用
for k,v in pairs(tbl) do print(k,v) end检查您的表,以查看它是否真正拥有该键。我可以看到
params.style_weight_list不是一个表,而是一个字符串。您可以使用load将字符串转换为带有 Lua 表的脚本,使用loadfile直接从文件中读取它(或使用require,这要求您在文件开头添加return),或制作一个读取值的解析器(更适合初学者的方式,但更加复杂)。