使用python导出Excel表格中的lua配置

ops/2024/10/22 17:21:06/

背景:游戏开发中, 策划使用Excel配置游戏中的参数数据,写一个工具用于导出这些配置

工具选择使用 python来开发,这样Windows、macOS、Linux平台都可以使用,而且有丰富的第三方模块。

本机先安装python,我这边使用的是python3.10.6。

确定Excel的结构

假设我们需要的配置是这种结构的:

lua">Items = {[1001] = { id = 1001, name = "新手武器", level = 1, attrs = { atk = 10 }, icon = "resource/items/1001.png" },[1002] = { id = 1002, name = "新手衣服", level = 1, attrs = { def = 10 }, icon = "resource/items/1002.png" },[1003] = { id = 1003, name = "新手护手", level = 1, attrs = { atk = 3, def = 3 }, icon = "resource/items/1003.png" }
}

表格中则为这样:在这里插入图片描述

我们称每一个Items项为ItemData,第一行为ItemData的中所有的key,第一列为ItemData在Items表中的key,从第二行开始每一格填入所在列的key对应的值,然后我们直接以文本格式读取所有内容,用=号连接key和value即可。

文件命名为:道具表.xlsx,表单名先设置为lua配置的表名:Items。

生成配置文件config.lua的代码大概是这种模式:

python">with open('config.lua', 'w', encoding="utf-8") as file:file.write("Items = {\n")#写入表格数据file.write("}")

生成文件:
在这里插入图片描述

读取Excel中的数据

Excel中的数据这里使用pandas模块来读取,然后写入config.lua
先安装padas:pip install pandas

python">import pandas#参数1是Excel文件路径
#参数2是表单名 
#参数header=n表示表头在第n+1行,没有表头则不填,我们这里表头在第一行所以填0
#参数dtype=str表示格子内的数据按字符串格式读取
#返回值是pandas读取表单生成的DataFrame
df = pandas.read_excel(".//配置表.xlsx", "Items", header=0, dtype=str)#数据的行、列数
row, column = df.shapewith open('config.lua', 'w', encoding="utf-8") as file:file.write("Items = {\n")#遍历所有行 每一行是一条 ItemDatafor r in range(row):row_data = df.iloc[r,:]#第一列是ItemData 的 key#df.columns 是表头内容key = row_data[df.columns[0]]file.write(f"[{key}]=")file.write("{")#遍历所有列 for c in range(column):sub_key = df.columns[c]sub_value = row_data[sub_key]file.write(f"{sub_key} = {sub_value}, ")file.write("},\n")file.write("}")

导出所有表单

pandas可以通过下述方法遍历sheet列表:

python">import pandasef = pandas.ExcelFile(".//配置表.xlsx")
for name in ef.sheet_names:# read_excel的参数1也可以使用ExcelFiledf = pandas.read_excel(ef, name, header=0, dtype=str)#数据的行、列数row, column = df.shapewith open('config.lua', 'w', encoding="utf-8") as file:file.write(name)file.write(" = {\n")... ...

http://www.ppmy.cn/ops/103560.html

相关文章

首页性能优化

1、缓存组件 <router-view v-slot"{ Component }"> <keep-alive><component :isComponent /></keep-alive> </router-view>2、图片压缩 npm i image-webpack-loaderconfig.module.rule(img).rule(/\.(png)|(jpg)/).use(image-webpac…

机器人外呼的具体操作步骤是怎样的?

今天小编给大家整理一下几点关于使用AI机器人拨打电销电话的具体步骤可以归纳为以下几个关键环节&#xff1a; ​ ### 一、选择合适的AI机器人服务 1. **平台选择**&#xff1a; - 选择一个提供AI机器人拨打电话服务的平台&#xff0c;这可以是云端的AI电话机器人服务&#…

Java-List结合ComableFuture自定义线程池的工具类

为了结合 CompletableFuture 处理列表中的数据,并利用自定义线程池来并行处理这些元素,我们 可以创建一个工具类 ListCompletableFutureUtil,它包含一个静态方法 processListConcurrently, 该方法接收一个列表、一个处理每个元素的函数以及一个自定义线程池,并利用 Com…

图片去噪及边缘检测

一&#xff1a;在Python中&#xff0c;图片去噪可以通过不同的方法实现&#xff0c;这些方法包括使用简单的滤波技术到更复杂的算法&#xff0c;比如高斯模糊、中值滤波、非局部均值去噪&#xff08;Non-local Means Denoising&#xff09;等。在这里&#xff0c;我将介绍几种常…

报错-_pickle.UnpicklingError: invalid load key, ‘\x9a‘.

1.报错1 File “/usr/local/lib/python3.8/dist-packages/torch/serialization.py”, line 1002, in _legacy_load magic_number pickle_module.load(f, **pickle_load_args) _pickle.UnpicklingError: invalid load key, ‘\x9a’. 报错原因&#xff1a;使用bert的预训练模…

PTH哈希传递攻击

PTH哈希传递攻击&#xff08;Pass The Hash&#xff09; 一、PTH简介 1、攻击原理 在使用 NTLM 身份验证的系统或服务上&#xff0c;用户密码永远不会以明文形式通过网络发送。 Windows 上的应用程序要求用户提供明文密码&#xff0c;然后调用 LsaLogonUser 类的 API&#x…

一个php快速项目搭建框架源码,带一键CURD等功能

介绍&#xff1a; 框架易于功能扩展&#xff0c;代码维护&#xff0c;方便二次开发&#xff0c;帮助开发者简单高效降低二次开发成本&#xff0c;满足专注业务深度开发的需求。 百度网盘下载 图片&#xff1a;

SpringBoot 集成mybatis-plus

目录 前言 简介 前提 运用mybatis-plus&#xff08;使用20241.1版本的idea&#xff09; 1 自动创建springboot项目 1.1 点击新建&#xff0c;SpringBoot 1.2 添加依赖项&#xff0c;点击创建 2添加 MyBatis-Plus Starter 依赖 2.1 打开mybatis-plus官网&#xff0c;点…