lua嵌入python(python 对比 lua)
excel的表格形式
说明:
1 .前三行是字段的中文解释、字段名和字段类型
2 .对程序不使用的字段附加“_”前缀,不在lua文件中生成
3 .计划填写数值时,偶尔会泄露数据。 如果有空值,请根据字段类型填写默认值。
4 .支持在一个字段中填写多组数据。 例如,“高度消耗”字段和自定义类型“表”表示{ {工具1id、工具1数量}、{工具2id、工具2数量}、… }
脚本文件的目录结构
用于快速运行excel2lua.py脚本的windows bat命令
excel2lua.py脚本代码
导入系统
导入操作系统
导入xlrd
导入re
# #当前脚本路径
curpath=操作系统.路径.域名(操作系统.路径. Abspath (sys.argv [0] ) )
# #文件头说明书格式设置文本
Lua _文件头格式磁盘=“”--[
%s
导出为excel2Lua.py
来自文件: % s
-]((n(n ' ' ) )。
将数据导出到TGT _ Lua _路径
EF EXCEL2LUA (SRC _ EXCEL _路径,TGT _ LUA _路径) :
打印(文件% s-% s % ) src _ excel _路径,文件路径)
# #负载执行数据
excel _ data _ src=xlrd.open _工作簿(src _ excel _路径,编码_复盖=' utf-8 ' )
打印([ excel ]工作表名称(s ) : ),excel _数据_序列名称) )
excel _ sheet=excel _数据_ src.sheet _ by _索引(
打印(%绘制,% d酷) % (excel .名称,excel_sheet.nrows,excel _ ssel,色差,色差)
# # excel数据光盘
excel _数据_磁盘={ }
# #代码名称列表
col_name_list=[]
# #酷值类型列表
col _ val _类型_列表=
# # ctype : 0空白、1字符串、2号、3天、4布尔型、5错误
在# # # 2行的所有列中保存字段名
forcolinrange(0,excel_sheet.ncols ) :
cell=excel_sheet.cell(1(() 1,酷) ) ) ) ) ) ) )至) ) ) ) ) ) ) )。
col _ name _ list.append (str (单元名.值) )
assert cell.ctype==1,' found a invalid col name in col [%d]! ~ ' % (酷) )。
遍历第# # # 3行的所有列以保存数据类型
forcolinrange(0,excel_sheet.ncols ) :
cell=excel_sheet.cell(2 (二,酷) ) ) ) ) ) ) ) ) ) ) )。
col _ val _ type _ list.append (str (单元值) )
assert cell.ctype==1,' Foundainvalidcolvaltypeincol [ % d ]! ~ ' % (酷) )。
删除# # #标题、字段名、字段类型的行,从第4行开始遍历生成行数据
财富范围(3,excel_sheet.nrows ) :
# #保存数据索引的默认第一列是id
CLL _ id=excel _ sheet.cell (行,0 ) () ) ) ) ) ) )。) ) )但) ) ) ) )中的一个示例。) ) ) )
资产单元id.ctype==2,' found a invalid id in row [%d]! ~ ' % (行)
检查# # # id的唯一性
if cell _ id.valueinexcel _数据_磁盘:
打印(“警告”复制数据:“% d”,所有优先级值被忽略! ~ ' % (单元id .值) )
# #原始数据列表
行数据列表=[ ]
# #保存各行的所有数据
forcolinrange(0,excel_sheet.ncols ) :
cell=excel _ sheet.cell (行,酷)。
k=酷名称列表
CLL _ val _ type=酷_ val _ type _ list
# # ignoredthestringthatstartwith ' _ '
ifstr(k ) .开始于“_”) :
继续
# #根据字段类型调整数值为null时,根据字段类型填写默认值
if cell _ val _ type=='字符串' :
if cell.ctype==0:
v='\'\"
else:
v='\' % s\' % (单元格值)
elif单元值类型=='整数' :
if cell.ctype==0:
v=-1
else:
v=int (元素值) )。
elif细胞类型=='浮点' :
if cell.ctype==0:
v=-1
else:
v=浮点(单元格值) )。
elif单元值类型=='表' :
if cell.ctype==0:
v='{} '
else:
v=单元格值
else:
v=单元格值
添加到# # #列表
row_data_list.append([k,v )。
保存# # # id和原始数据
excel _ data _ dict [单元id .值]=行数据列表
# #练习正则检索lua文件名不带后缀作为table的名称使用正则
搜索对象=re .搜索([^\/:*? |\r\n] ().(w