如何用Python拆分Lua单行长字符串中的数据为独立可操作对象?
处理Lua单行游戏数据的Python方案
核心需求
从单行Lua长字符串中提取data={后的所有{值1,值2,值3,值4}格式对象,转换为可独立操作的JSON或表格格式。
实现步骤
1. 定位并提取data字段核心内容
先通过正则匹配锁定data字段包裹的所有对象内容,跳过无关的Lua语法部分:
import re import json import pandas as pd # 假设lua_data是读取到的单行Lua完整数据字符串 lua_data = "你的单行Lua数据内容..." # 匹配data={}到结尾}}]]之间的核心数据 match = re.search(r'data=\{(.*?)\}\]\]', lua_data, re.DOTALL) if not match: raise ValueError("未找到目标data字段内容") data_content = match.group(1)
2. 拆分每个独立对象
用正则匹配所有{...}格式的对象,拆分出每个对象的4个值:
# 匹配所有{值1,值2,值3,值4}格式的对象 object_pattern = re.compile(r'\{([^}]+)\}') objects = object_pattern.findall(data_content) # 解析每个对象为列表 parsed_data = [] for obj in objects: values = [v.strip() for v in obj.split(',')] # 确保每个对象严格包含4个值 if len(values) == 4: parsed_data.append(values)
3. 转换为目标格式
转JSON格式
json_result = json.dumps(parsed_data, indent=2, ensure_ascii=False) # 保存到文件 with open('auction_data.json', 'w', encoding='utf-8') as f: f.write(json_result)
转表格(CSV/Excel)
对应数据里的fields字段(itemString, minBuyout, numAuctions, marketValueRecent)生成结构化表格:
df = pd.DataFrame( parsed_data, columns=["itemString", "minBuyout", "numAuctions", "marketValueRecent"] ) # 保存为CSV df.to_csv('auction_data.csv', index=False, encoding='utf-8') # 或保存为Excel df.to_excel('auction_data.xlsx', index=False)
注意事项
- 若数据中存在带逗号的复杂值(如带引号的字符串),需调整拆分逻辑,可改用Lua解析库(如
lupa)直接解析Lua代码,避免正则的局限性。 - 正则的
re.DOTALL参数确保.能匹配所有字符(包括换行,虽然原数据是单行,但兼容潜在格式变动)。
内容的提问来源于stack exchange,提问作者Mrroach
相关产品推荐
相关产品推荐

