前段时间写过这篇文章将 python 数据转化为 lua 格式, 这段时间因为新项目改用 Creator + TypeScript 的原因, 需要导出 ts 格式的数据.

当然我们可以选择使用 json/yaml 等格式作为数据文件, 这会简单很多, 但是有两个原因, 使得我们一致认为 ts 格式的数据是更好的选择:

访问数据时 VSCode 会根据数据内容给出提示

打包时会被编译加密, 省去自己加密数据文件的工作

其中第一点是最为重要的, 这也是我们立项之初就选择 TypeScript 的重要原因:

这太棒了, 下面就让我们看看这个文件是如何生成的吧.

魔改 lua.py

我们直接在前一篇文章的 lua.py 的基础上改, 这样会节省一些准备工作. 首先我们来对比一下 lua 和 ts 语法的区别:

1

2

3

4

5

6

7

8{

name = "Nick",

condition_VIP_level = 0,

item = {

[1] = 5,

[2] = 10

}

}

1

2

3

4

5

6

7

8{

name: "Nick",

condition_VIP_level: 0,

item: [

5,

10,

],

}

从上面的示例可以看出, 这两个语言还是蛮像的, 只是有一些细微的区别.

Dict

lua 使用 =, 而 ts 使用 :, 我们直接修改:

1key_separator = ': '

另有一个小细节, tslint 推荐最后一个元素后面也加上 ,, 猜测这样做的好处是方便移动, 新增新的条目, 这样只用改动一行就行. 我们修改:

1

2# yield '\n' + (' ' * (_indent * _current_indent_level))

yield _item_separator + '\n' + (' ' * (_indent * _current_indent_level))

Array

lua 中创建 Array 也是用的 {}, 而 ts 是 [], 这个很好改, 将 _iterencode_list 中的标签改一下就行.

Array 和 Dict 一样, 最后一个元素要加逗号, 和 Dict 的修改方法一致.

另我们的原始数据有一个 bug, List 类型的数据也会创建 Dict 来处理, 下标还是从 1 开始的. 于是我写了一个小函数来将这种类型转换为 List 格式:

1

2

3

4

5

6

7

8

9

10

11

12

13def dict_to_array(dct):

array = [None] * len(dct)

for key, value in dct.iteritems():

if type(key) == int:

try:

array[key-1] = value

except Exception as e:

break

for item in array:

if not item:

return

return array

然后在渲染 Dict 的时候判断下, 如果可以转化为 List 的话就用 List 去渲染.

导出

之前 lua 的导出用的是 return xxx; 的形式, 在 ts 中修改为:

1return "export default " + cls(...) + ";\n"

以上就是修改的全部内容, 技术含量不高, 以后也不会再写类似的文章了. 从这两次的修改中, 可以看到 Python json 库设计的非常棒, 只需要做少量修改就可以变成其他数据格式. 其中对 yield 用法堪称典范, 十分值得我们学习, 有机会我们应该就这点进行赏析.

python typing typescript_将 python 数据转化为 TypeScript 格式相关推荐

  1. 利用Python整理TGA的导出数据,成为Excel格式的

    ''' TGA的导出数据是ANSI格式的, 利用Python整理TGA的导出数据,成为Excel格式的. '''''' 使用Python自带的open命令,打开file1文档 file1文档是ANSI ...

  2. R语言把dataframe数据转化为tibble格式、查看每个数据列的缺失值个数、使用数据列的均值对数据列的缺失值进行填充

    R语言把dataframe数据转化为tibble格式.查看每个数据列的缺失值个数.使用数据列的均值对数据列的缺失值进行填充 目录

  3. Labelme标注的json数据转化为coco格式的数据

    Labelme标注的json数据转化为coco格式的数据 1. 转化方法一 2. 转化方法二 1. 转化方法一 import os import json import numpy as np imp ...

  4. Python处理示波器CSV表格数据、微软excel格式数据

    Python处理示波器CSV文件数据.微软excel文件数据 软件环境 处理示波器导出的csv表格数据 csv原始数据形式 处理代码 代码运行结果 处理Simulink导出的excel表格数据 exc ...

  5. 怎么把excel文件转成dta_如何将excel表格数据转化为dta格式-怎么把dat文件转换成Excel文件,里面的数据格式要......

    dat文件怎么转换成excel 1.首先点击excel表格左上角的"文件"选项. 2.在打开的页面中点击"另存为"选项并点击其中的"浏览"按 ...

  6. excel文件中的数据转化为json格式并输出json文件

    1:需求: 将excel中的数据获取出来,转化为json格式,之后输出到.json文件中. 2:步骤: (1): 将excel中的数据获取出来,使用jsonObject转化为json格式字符串 (2) ...

  7. python typing typescript_Python的价值,对比Java/Typescript

    我的工作语言是java/kotlin/typescript, 本来是不喜欢它的,不理解它存在的价值,觉得它是个很难在实际工作中使用的语言,比如说做web app的后台,它肯定比不上java,因为不太可 ...

  8. python + ffmpeg爬取视频,转化为mp4格式

    项目需求 网址链接:https://taobaolive.taobao.com/room/index.htm?spm=a1z9u.8142865.0.0.434f34edQAItBB&feed ...

  9. php 把查询数据转json格式,php将从数据库查询到的数据转化为json格式,并写入json文件中...

    1.主要是对数据进行编码 $str=json_encode($jarr);//将数组进行json编码 2.其次是写入json文件中 $file = fopen("../../code/myC ...

最新文章

  1. python自动补全库_叼炸天的库! 自动补全 Python 代码,能节省 60% 敲码时间
  2. SpringMVC源码剖析(三)- DispatcherServlet的初始化流程
  3. 关于手机的,发送验证码,正则
  4. LeetCode 面试题 03 数组中重复的数字
  5. 2019 年,智能问答(Question Answering)的主要研究方向有哪些?
  6. 实战演练:PostgreSQL在线扩容
  7. GDB中创建要素数据集
  8. 同一字段降序个升序_5个打印小技巧,表格打印没烦恼
  9. 【java学习之路】(mysql篇)003.mysql中limit、表的创建、删除、约束
  10. 多元函数的极值、微分
  11. Log4j2的常用配置
  12. JavaSE思维导图
  13. 清理windows10系统垃圾文件 bat批处理命令(进阶版)
  14. 制作HTML邮件邮箱注意问题和解决方案--兼容手机邮箱、电脑邮箱和邮件客户端
  15. 软件工程导论 银行储蓄系统_银行储蓄系统.ppt
  16. java selenium回车键_JavaSelenium 模拟键盘方法封装
  17. 华为云,奔跑的感觉爽吗?
  18. I2C操作笔记——以 AT24C04为例
  19. Qt for WebAssembly in Windows
  20. Clover 驱动文件夹_软网推荐:原汁原味 备份还原驱动程序

热门文章

  1. powerdesigner mysql 反引号_PowerDesigner实用技巧小结 及 导出word,想字段顺序跟模型中一致,如何设置...
  2. 启明云端WT32-CAM操作视频,让你快速上手ESP32camera应用
  3. 美国计算机科学和计算机工程专业的好大学,2021USNews美国计算机工程专业排名一览表...
  4. mysql读写分离_Mysql数据库09MySQL读写分离
  5. 一文读懂“新一代人工智能地图” ,让AI真正走进用户的生活
  6. python缺少dll文件_python37.dll文件下载,金山毒霸dll修复工具帮您解决文件丢失导致“python37.dll找不到”的系统问题...
  7. 算法题-大数相乘问题
  8. STM32L0开发——ADC多通道采集,IDE和IAR开发注意事项
  9. 在Ubuntu 18.04中安装JDK 8
  10. python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)...