[英]generating list/array from a text file in 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 是一個 int):
local neu_sw = params.style_weight_list[frameIdx]
它返回一個 nil 值,所以我想我必須將導入的列表從字符串轉換為 LUA 中正確可用的列表,但不知道如何? 有人有想法嗎?
當您不確定腳本中發生了什么時,您可以隨時調試代碼。
使用print
和type
來查看您擁有的值及其類型。
檢查你的表for k,v in pairs(tbl) do print(k,v) end
看看它是否真的有那個鍵。
如我所見, params.style_weight_list
不是表格而是字符串。 您可以使用load
將字符串轉換為帶有 Lua 表的腳本,使用loadfile
直接從文件中讀取它(或使用require
,這需要您在文件開頭添加return
),或者制作一個讀取值的解析器(更多正確的方法,但對初學者來說很復雜)
感謝您的幫助 Nifim 和 Spar!
感謝你的洞察力,我讓它工作了。 如果這可以幫助,這里我做了什么:
將我的 python 數組導出到一個 txt 文件(帶有 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 = {}
對於 io.lines("sw.lua") 中的行做
table.insert(sw_array,行)
結尾
本地 cur_sw = sw_array[frameIdx+1]
其中 frameIdx 是我想要讀取的特定值索引(和“+1”,因為 lua 表從 1 開始計數,python 從 0 開始計數)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.