簡體   English   中英

從 LUA 中的文本文件生成列表/數組

[英]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 中正確可用的列表,但不知道如何? 有人有想法嗎?

當您不確定腳本中發生了什么時,您可以隨時調試代碼。

  1. 使用printtype來查看您擁有的值及其類型。

  2. 檢查你的表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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM