在lua中搜索包含特定字符串的键

2024-10-02 10:26:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个lua文件,其中包含我想通过Python提取的信息。为了在Python中使用Lua,我使用了lunatic-python,但这不是一个要求-如果您有其他方法也可以。在

lua文件是这样的:

source = {
    licences = {
        "GPL",
        "MIT",
    },
    env = {
        MYTOOL_VERSION = "1.2.3",
        OTHER_KEY = "OTHER_VALUE",
    },
    some_other_keys = {
        ...
    },
}

我感兴趣的值是source.env.MYTOOL_VERSION,而{}总是不同的。由于我没有lua的经验,我不知道如何告诉它“获取包含字符串VERSION的键的值”。我读了一些关于Lua中tables概念的教程(这对我来说还是有点奇怪),我想函数next或{}可能对我的案例有用。虽然这些函数仍然让我困惑,但在示例中,我发现它们总是在循环中使用,但是当我这样做时:

^{pr2}$

而不是

k, v = next(source.env)

似乎x现在只包含键,而不包含值。当使用pairs而不是next时,我得到了一个函数,但我不知道如何调用它。在

我的Pythonscript当前如下所示:

import lua

with open(project_path) as f:
    script = f.read()

lua.execute(script)

i = 1

licences = []

while True:
    data = lua.globals().source.licences[i]
    if data is None:
        break
    licences.append(data)
    i += 1

version = lua.eval('source.env[next(source.env)]') if lua.globals().source.env is not None else 'unkown',

它只获取env表中任何键的值,而不一定是包含VERSION的键的值。在

那么,什么是一个优雅的解决方案来获取这个文件的所需数据,以便与Python一起使用呢?在


Tags: 文件函数envsourcedataifversionscript

热门问题