猿问

在 Python 中读取和写入有效的 Json 文件输出

import json

import os

import shutil

import time

# import objectpath

import sys

import datetime

true = "true"

false = "false"

null = "null"


from datetime import datetime, timedelta



with open('./notificationsManagement/notifications.json') as json_file:

    data = json.load(json_file)



day_start = 30

for tuple in data:

    tuple['creationTime'] -=  int(timedelta(days = day_start).total_seconds())

    day_start -= 2


print(data)


text_file = open("output.json", "w")

text_file.write(str(data))

text_file.close()

我写了一个脚本,以便:

  1. 读取 Json 文件

  2. 执行修改

  3. 打印数据

  4. 将新的有效 Json 文件输出为“output.json”

我遇到的几个问题:

  1. Json 的元组乱序

  2. 数据在每个标题前用“u”打印

  3. 新文件包含相同的“u”(主要问题)

有什么建议?


慕森王
浏览 207回答 2
2回答

绝地无双

关于u'foo':这是正常的 Python 行为,u'something'意味着您的字符串是 Unicode 字符串。在此处查看有关 Unicode 字符串的更多信息您可以通过使用此行将您的dictJSON 字符串编写为 JSON 字符串来修复它,顺便说一句,您应该始终使用json.dump()(或json.dumps()) 来编写 JSON 字符串:text_file.write(json.dump(data))关于钥匙顺序:首先,JSON 的 RFC对此进行了明确说明:对象是零个或多个名称/值对的无序集合,其中名称是字符串,值是字符串、数字、布尔值、空值、对象或数组。在这里,“对象”的意思是“哈希”,这就是我们在 Python 中所说的“字典”。这意味着 JSON 字符串的键永远不会被排序。而且,data = json.load(json_file)加载一个 JSON 字符串并将其解析为 Python 字典。Python dicts 也没有排序(至少在 Python3.7 之前)。这意味着两件事:您无法按预期顺序读取 JSON 文件。根据第 1 点,以特定顺序编写 JSON 字符串没有意义(因为您将无法以相同顺序读取它)

慕妹3146593

你确定这真的在运行吗?(清理所有.pyc)数据是一个字典,您遍历键(字符串)并将它们视为字典for tuple in data:         tuple['creationTime'] -=  int(timedelta(days = day_start).total_seconds())
随时随地看视频慕课网APP

相关分类

Python
我要回答