如何将字典中的 ":" 转换为 "="
2020-8-18 21:41:59
收藏:0
阅读:137
评论:3
我正在使用 Python 获取 JSON 请求,并将其转换为字典。现在我需要将其转换为 Lua,以便将字典粘贴到我的 Lua 代码中;由于有很多字典,我在将 : 转换为 = 方面遇到了问题。
例如,Python 字典在打印时为
{"key" : value}
而 Lua 表只接受 {"key" = value}。
点赞
用户6879826
这是一种笨拙、易碎的解决方案,因为 OP 表示使用 JSON 库是行不通的。
不清楚 Python 字典中可能存储的值是什么,但很容易可能是字符串或其他字典。以下尝试处理嵌套字典,并将字符串值放入引号中。请注意,Lua 在表构造器中不使用引号来表示键。
#Python 3 代码
d = {'one': 1,'two': 2,'adict':{'x':'a','y':'b'}}
def py_dict_to_lua_table(d):
lines = '{'
for k,v in d.items():
if isinstance(v, dict):
v = py_dict_to_lua_table(v)
elif isinstance(v, str):
v = f'"{v}"'
lines += f'{k} = {v},'
lines += '}'
return lines
lua_string = "my_lua_table = " + py_dict_to_lua_table(d)
with open('test.lua', 'w') as f:
f.write(lua_string)
然后,从命令行:
$ python3 convert.py
然后,从 Lua:
$ lua -i test.lua
Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio
> dofile "../lua/lib/utils.lua"
> table.inspect(my_lua_table)
one = 1
adict =
y = b
x = a
two = 2
> my_lua_table.adict.y
b
请注意,如果 Python 字典包含不方便的值,例如数组,则这将无法工作。必须增强 py_dict_to_lua_table 函数,以将 Python 数组表示为 Lua 表或其他表。如果可能的话,还有另一个原因,就是只使用 JSON 解析库。
2020-08-15 01:48:56
用户10157759
你可以使用json.JSONEncoder:
from json import JSONEncoder
encoder = JSONEncoder(separators=[', ', ' = '])
dict_str = encoder.encode({'a': 1, 'b': {'c': 3, 'd': [4, 5]}})
print(dict_str)
输出结果为:
{"a" = 1, "b" = {"c" = 3, "d" = [4, 5]}}
2020-08-15 02:12:06
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

lines = [] for key, value in your_dict.items(): lines.append(f'{"{key}"={value}} ') with open("./dict.txt", "w"): as f: f.write('\n'.join(lines))# 将字典写入文本格式 lines = [] for key, value in your_dict.items(): lines.append(f'{"{key}"={value}} ') # 将字典的键值对转换为字符串,并添加到列表中 with open("./dict.txt", "w") as f: f.write('\n'.join(lines)) # 将列表中的字符串以换行符连接,然后写入文件中注意:本翻译中“字典”指的是原代码中的
your_dict变量所代表的 Python 字典类型。