将所有传出事件的日期和时间值保存在元组列表中

2024-05-14 13:50:11 发布

您现在位置:Python中文网/ 问答频道 /正文

传出事件表示“from”的值=4 有人能帮我写代码吗。我卡住了

eg:
({'date': '20090328',
  'time': '061546',
  'from': '4',
  'to': '12',
  'cell_tower': '220',
  'event_type': 'MOC'},
 {'date': '20090328',
  'time': '053359',
  'from': '4',
  'to': '2',
  'cell_tower': '221',
  'event_type': 'SOM'},
)

json文件:

{'user': '4', 'data': [{'date': '20090328', 'time': '061546', 'from': '4', 'to': '12', 'cell_tower': '220', 'event_type': 'MOC'}, {'date': '20090328', 'time': '053359', 'from': '4', 'to': '2', 'cell_tower': '221', 'event_type': 'SOM'}, {'date': '20090328', 'time': '012339', 'from': '6', 'to': '4', 'cell_tower': '14054', 'event_type': 'MOC'}

Tags: 文件to代码fromeventjsondatetime
3条回答

见下文(一个班轮)

data = {
    'user': '4',
    'data': [
        {
            'date': '20090328',
            'time': '061546',
            'from': '4',
            'to': '12',
            'cell_tower': '220',
            'event_type': 'MOC'
        },
        {
            'date': '20090328',
            'time': '053359',
            'from': '4',
            'to': '2',
            'cell_tower': '221',
            'event_type': 'SOM'
        },
        {
            'date': '20090328',
            'time': '012339',
            'from': '6',
            'to': '4',
            'cell_tower': '14054',
            'event_type': 'MOC'
        }
    ]
}

tuples = [(e['date'], e['time']) for e in data['data'] if e['from'] == '4']
print(tuples)

输出

[('20090328', '061546'), ('20090328', '053359')]

使用名为filename.json的json文件:

{
  "user": "4",
  "data": [
    {
      "date": "20090328",
      "time": "061546",
      "from": "4",
      "to": "12",
      "cell_tower": "220",
      "event_type": "MOC"
    },
    {
      "date": "20090328",
      "time": "053359",
      "from": "4",
      "to": "2",
      "cell_tower": "221",
      "event_type": "SOM"
    },
    {
      "date": "20090328",
      "time": "012339",
      "from": "6",
      "to": "4",
      "cell_tower": "14054",
      "event_type": "MOC"
    }
  ]
}

python代码如下所示:

import json

outgoing = '4'
tuples = []

file = open('filename.json')

events = json.load(file)['data']
for event in events:
    if event['from'] == outgoing:
        tuples.append((event['date'], event['time']))

file.close()

问题是您的输入数据不是有效的json格式,因为json需要在其值周围加上双引号

您需要首先读取数据并用"替换所有',然后使用json格式化为json对象,然后使用列表理解来获得结果

import json

with open('inp.json', 'r') as f:
    inp = f.read()                             # load data from file
    inp = inp.replace("'", "\"")               # replace ' with "
    inp = json.loads(inp)                      # create a json object
    output = [(data['date'], data['time']) for data in inp['data'] if data['from'] == '4']
    for out in output:
        print(out)

输出:

('20090328', '061546')
('20090328', '053359')

相关问题 更多 >

    热门问题