【问题标题】:Python - Truncate a timestamp in json arrayPython - 截断 json 数组中的时间戳
【发布时间】:2021-06-11 05:03:41
【问题描述】:

给出以下 json 数组:

[
{
    "2020-02-03T00:04:11.000Z": {
        "USD": [
            0.38449135,
            422507.831002123,
            0
        ]
    },
    "2020-02-04T00:04:08.000Z": {
        "USD": [
            0.39151832,
            390909.273872433,
            0
        ]
    },
    "2020-02-05T00:04:16.000Z": {
        "USD": [
            0.40914842,
            498653.042530699,
            0
        ]
    }
]

我需要去掉键值的分、秒和毫秒。

如您所见,每个项目的键值都不同。

结果应该是:

[
{
    "2020-02-03": {
        "USD": [
            0.38449135,
            422507.831002123,
            0
        ]
    },
    "2020-02-04": {
        "USD": [
            0.39151832,
            390909.273872433,
            0
        ]
    },
    "2020-02-05": {
        "USD": [
            0.40914842,
            498653.042530699,
            0
        ]
    }
]

此外,如果可以删除“USD”键,这3个值将直接移动到日期的第一级,那就太好了。

【问题讨论】:

    标签: python json timestamp truncate


    【解决方案1】:

    您可以通过T 作为分隔符来拆分密钥。

    请考虑下一个代码:

    import json
    
    
    
    start = [
    {
        "2020-02-03T00:04:11.000Z": {
            "USD": [
                0.38449135,
                422507.831002123,
                0
            ]
        },
        "2020-02-04T00:04:08.000Z": {
            "USD": [
                0.39151832,
                390909.273872433,
                0
            ]
        },
        "2020-02-05T00:04:16.000Z": {
            "USD": [
                0.40914842,
                498653.042530699,
                0
            ]
        }
    }
    ]
    
    
    def process_data(data):
        result = []
        for k in data:
            result += data[k]
        return result
    
    result = []
    for item in start:
        new_dict = {}
        for dct_item in item:
            data = process_data(item[dct_item])
            truncated = dct_item.split('T')[0]
            if truncated in new_dict:
                new_dict[truncated] += data
            else:
                new_dict[truncated] = data
        result.append(new_dict)
    
    print(json.dumps(result,indent=4))
    

    【讨论】:

      【解决方案2】:

      下面有一条线

      data = [
          {
              "2020-02-03T00:04:11.000Z": {
                  "USD": [
                      0.38449135,
                      422507.831002123,
                      0
                  ]
              },
              "2020-02-04T00:04:08.000Z": {
                  "USD": [
                      0.39151832,
                      390909.273872433,
                      0
                  ]
              },
              "2020-02-05T00:04:16.000Z": {
                  "USD": [
                      0.40914842,
                      498653.042530699,
                      0
                  ]
              }
          }
      ]
      short_data = {k[:k.find('T')]: v['USD'] for k, v in data[0].items()}
      print(short_data)
      

      输出

      {'2020-02-03': [0.38449135, 422507.831002123, 0], '2020-02-04': [0.39151832, 390909.273872433, 0], '2020-02-05': [0.40914842, 498653.042530699, 0]}
      

      【讨论】:

        猜你喜欢
        • 2011-07-03
        • 2020-01-31
        • 2013-10-14
        • 2014-03-25
        • 2021-07-11
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        相关资源
        最近更新 更多