python typing typescript_将 python 数据转化为 TypeScript 格式
前段时间写过这篇文章将 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 格式相关推荐
- 利用Python整理TGA的导出数据,成为Excel格式的
''' TGA的导出数据是ANSI格式的, 利用Python整理TGA的导出数据,成为Excel格式的. '''''' 使用Python自带的open命令,打开file1文档 file1文档是ANSI ...
- R语言把dataframe数据转化为tibble格式、查看每个数据列的缺失值个数、使用数据列的均值对数据列的缺失值进行填充
R语言把dataframe数据转化为tibble格式.查看每个数据列的缺失值个数.使用数据列的均值对数据列的缺失值进行填充 目录
- Labelme标注的json数据转化为coco格式的数据
Labelme标注的json数据转化为coco格式的数据 1. 转化方法一 2. 转化方法二 1. 转化方法一 import os import json import numpy as np imp ...
- Python处理示波器CSV表格数据、微软excel格式数据
Python处理示波器CSV文件数据.微软excel文件数据 软件环境 处理示波器导出的csv表格数据 csv原始数据形式 处理代码 代码运行结果 处理Simulink导出的excel表格数据 exc ...
- 怎么把excel文件转成dta_如何将excel表格数据转化为dta格式-怎么把dat文件转换成Excel文件,里面的数据格式要......
dat文件怎么转换成excel 1.首先点击excel表格左上角的"文件"选项. 2.在打开的页面中点击"另存为"选项并点击其中的"浏览"按 ...
- excel文件中的数据转化为json格式并输出json文件
1:需求: 将excel中的数据获取出来,转化为json格式,之后输出到.json文件中. 2:步骤: (1): 将excel中的数据获取出来,使用jsonObject转化为json格式字符串 (2) ...
- python typing typescript_Python的价值,对比Java/Typescript
我的工作语言是java/kotlin/typescript, 本来是不喜欢它的,不理解它存在的价值,觉得它是个很难在实际工作中使用的语言,比如说做web app的后台,它肯定比不上java,因为不太可 ...
- python + ffmpeg爬取视频,转化为mp4格式
项目需求 网址链接:https://taobaolive.taobao.com/room/index.htm?spm=a1z9u.8142865.0.0.434f34edQAItBB&feed ...
- php 把查询数据转json格式,php将从数据库查询到的数据转化为json格式,并写入json文件中...
1.主要是对数据进行编码 $str=json_encode($jarr);//将数组进行json编码 2.其次是写入json文件中 $file = fopen("../../code/myC ...
最新文章
- python自动补全库_叼炸天的库! 自动补全 Python 代码,能节省 60% 敲码时间
- SpringMVC源码剖析(三)- DispatcherServlet的初始化流程
- 关于手机的,发送验证码,正则
- LeetCode 面试题 03 数组中重复的数字
- 2019 年,智能问答(Question Answering)的主要研究方向有哪些?
- 实战演练:PostgreSQL在线扩容
- GDB中创建要素数据集
- 同一字段降序个升序_5个打印小技巧,表格打印没烦恼
- 【java学习之路】(mysql篇)003.mysql中limit、表的创建、删除、约束
- 多元函数的极值、微分
- Log4j2的常用配置
- JavaSE思维导图
- 清理windows10系统垃圾文件 bat批处理命令(进阶版)
- 制作HTML邮件邮箱注意问题和解决方案--兼容手机邮箱、电脑邮箱和邮件客户端
- 软件工程导论 银行储蓄系统_银行储蓄系统.ppt
- java selenium回车键_JavaSelenium 模拟键盘方法封装
- 华为云,奔跑的感觉爽吗?
- I2C操作笔记——以 AT24C04为例
- Qt for WebAssembly in Windows
- Clover 驱动文件夹_软网推荐:原汁原味 备份还原驱动程序
热门文章
- powerdesigner mysql 反引号_PowerDesigner实用技巧小结 及 导出word,想字段顺序跟模型中一致,如何设置...
- 启明云端WT32-CAM操作视频,让你快速上手ESP32camera应用
- 美国计算机科学和计算机工程专业的好大学,2021USNews美国计算机工程专业排名一览表...
- mysql读写分离_Mysql数据库09MySQL读写分离
- 一文读懂“新一代人工智能地图” ,让AI真正走进用户的生活
- python缺少dll文件_python37.dll文件下载,金山毒霸dll修复工具帮您解决文件丢失导致“python37.dll找不到”的系统问题...
- 算法题-大数相乘问题
- STM32L0开发——ADC多通道采集,IDE和IAR开发注意事项
- 在Ubuntu 18.04中安装JDK 8
- python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)...