python - 如何在不引用键的情况下转储类似 json 的字符串?

标签 python json python-3.x

而不是这个(来自 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在合理的时间内运行
  • 您的数据不包含本身包含可能与我在这里使用的模式匹配的内容的字符串值。

  • 该模式有效地查找所有字典键并去掉引号。

    关于python - 如何在不引用键的情况下转储类似 json 的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50788082/

    相关文章:

    javascript - 使用 JS 消耗 JSON 时出错

    python - Pygame 中的换行符在输入框中使用 Unicode

    python - 对本地文件夹中的所有文件重复 BeautifulSoup 抓取

    Php,如何 "safe"JSON 编码一个数组?

    PHP MySQL JSON 查询

    python - 为现有项目创建 "virtualenv"

    python - 脾气暴躁,TypeError : Could not be cast from dtype ('<M8[us]' ) to dtype ('<M8[D]' )

    python - 如何检查列表中的所有元素是否都存在于 pandas 列中

    python - 使用 Pandas 修改excel文件的标题

    python - 将 py2neo v3 与谷歌应用引擎一起使用