You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类JSON无引号等号格式名称及Python导入方法咨询

格式名称与Python导入方案

格式名称

你遇到的这种格式是Lua表语法,也是游戏《Factorio》配置文件的常用格式——Factorio的物品、配方配置基本都采用这类类JSON的Lua表写法。它完全符合Lua中表的定义规则:键名如果是合法标识符可省略引号,用=替代冒号实现键值关联。

Python导入方案

方案1:用Lua解析库直接处理(推荐)

这种格式本质是Lua代码,用专门的Lua-Python交互库可直接解析,避免手动转换的潜在bug:

  1. 先安装lupa库:
pip install lupa
  1. 解析代码示例:
import lupa
from lupa import LuaRuntime

lua = LuaRuntime(unpack_returned_tuples=True)
# 读取日志内容到content变量
with open('your_log_file.txt', 'r') as f:
    content = f.read()
# 解析Lua表为Python字典
data = lua.eval(content)
# 直接操作解析后的字典
print(data['accumulator']['animation_speed'])

方案2:手动转标准JSON(适合简单场景)

如果不想额外安装库,可写简单转换脚本,将格式转为标准JSON后用json库解析:

import re
import json

def convert_to_json(lua_table_str):
    # 把=替换为:
    step1 = lua_table_str.replace('=', ':')
    # 给无引号的合法键名添加双引号
    step2 = re.sub(r'([a-zA-Z_][a-zA-Z0-9_]*):', r'"\1":', step1)
    return step2

# 读取日志内容
with open('your_log_file.txt', 'r') as f:
    content = f.read()

# 转换并解析
json_str = convert_to_json(content)
data = json.loads(json_str)
print(data['accumulator']['ingredients'][0])

注意:手动转换仅适合结构简单的场景,若日志包含Lua特有语法(比如注释、函数调用)会失效,此时优先用方案1。

内容的提问来源于stack exchange,提问作者DeerFreak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:30:45