python - 如何在不引用键的情况下转储类似 json 的字符串?
问题描述
而不是这个(来自json.dumps
):
[
{
"created": 581937573,
"text": "asdf"
},
{
"created": 581937699,
"text": "asdf"
}
]
我想得到这个 [non-JSON] 输出:
[
{
created: 581937573,
text: "asdf"
},
{
created: 581937699,
text: "asdf"
}
]
如果json.dumps
可以选择更改键的引号字符,我可以将其设置为占位符并稍后将其删除。不幸的是,它似乎没有这个选项......还有其他聪明的想法吗?
(不需要从这种格式加载,但如果也存在解决方案会很有趣)
解决方案
re.sub
在某些假设下提供快速修复:
import re
data = [...]
json_data = json.dumps(data)
with open('file.txt', 'w') as f:
f.write(re.sub(r'"(.*?)"(?=:)', r'\1', json_data))
file.txt
[
{
created: 581937573,
text: "asdf"
},
{
created: 581937699,
text: "asdf"
}
]
这些假设是
- 您的数据足够小,
re.sub
可以在合理的时间内运行 - 您的数据不包含本身包含可能与我在这里使用的模式匹配的内容的字符串值。
该模式有效地查找所有字典键并去掉引号。
推荐阅读
- javascript - 如何使用 dropzone 获取 $_FILES 信息?
- php - 使用黑白蒙版蒙版 PNG 图像
- reactjs - 什么在 React 中呈现函数
- node.js - Linux上的Node JS内存泄漏
- java - 如何使用 Selenium 和 Java 在 Chrome 中禁用 cookie
- git - Git - 在 Team Explorer Visual Studio 上撤消提交
- php - 使用 codeigniter 将 2 列合二为一
- laravel - 发送确认链接并单击原始电子邮件后,使用新电子邮件更新用户的个人资料
- c# - 为什么这段代码声明一个本地函数只是为了在之后立即调用它?
- c# - 程序不显示另一个控制器的详细信息