python - 转储到 JSON 添加额外的双引号和引号转义

标签 python json

我正在使用 Python 工具检索 Twitter 数据,并将这些数据以 JSON 格式转储到我的磁盘中。我注意到一条用双引号括起来的推文意外转义了整个数据字符串。此外,实际 JSON 格式的所有双引号都用反斜杠转义。

它们看起来像这样:

"{\"created_at\":\"Fri Aug 08 11:04:40 +0000 2014\",\"id\":497699913925292032,

如何避免这种情况?应该是:

{"created_at":"Fri Aug 08 11:04:40 +0000 2014" .....

我的文件输出代码如下所示:

with io.open('data'+self.timestamp+'.txt', 'a', encoding='utf-8') as f:
            f.write(unicode(json.dumps(data, ensure_ascii=False)))
            f.write(unicode('\n'))

在后续处理步骤中读取 JSON 文件时,意外转义会导致问题。

最佳答案

您正在对 JSON 字符串进行双重编码。 data 已经是 JSON 字符串,不需要再次编码:

>>> import json
>>> not_encoded = {"created_at":"Fri Aug 08 11:04:40 +0000 2014"}
>>> encoded_data = json.dumps(not_encoded)
>>> print encoded_data
{"created_at": "Fri Aug 08 11:04:40 +0000 2014"}
>>> double_encode = json.dumps(encoded_data)
>>> print double_encode
"{\"created_at\": \"Fri Aug 08 11:04:40 +0000 2014\"}"

只需将这些直接写入您的文件即可:

with open('data{}.txt'.format(self.timestamp), 'a') as f:
    f.write(data + '\n')

关于python - 转储到 JSON 添加额外的双引号和引号转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25242262/

相关文章:

python - Pandas 将数据从索引表添加到数据框

python - 在 flask 路由功能中使用请求模块

json - 没有为类 org.hibernate.proxy.pojo.javassist.Javassist 找到序列化程序?

json - 如何有条件地将 JSON 反序列化为枚举的两个不同变体?

javascript - Node.js:使用 "@"-symbol 解析 json-ld/JSON

python - 如何从 lxml.html.html5paser 元素标记内部删除 namespace 值

python - 如何将 Dataframe 列中值的最后 3 位数字拆分为两个新的 Dataframe?

python - 查询具有列表值的 Pandas 数据框列

json - PostgreSQL 中的递归 JSON 生成

java - 当我获取 JSON 元素时为空值