You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取JSON事件中时间戳并格式化后与事件内容写入文件?

问题:从JSON事件列表中提取并格式化时间与内容写入文件

需要从包含字符串和字典的列表对象中提取特定值,当事件为"user"或"bot"时,将格式化后的时间、事件类型和文本内容写入输出文件。

输入JSON结构示例

{
  "event": "user",
  "timestamp": {
    "$numberDouble": "1671459681.4369426"
  },
  "metadata": {
    "model_id": "125817626"
  },
  "text": "hello",
  "parse_data": {
    "intent": {
      "name": "greet",
      "confidence": {
        "$numberDouble": "1.0"
      }
    }
  }
}

期望输出格式

2020-03-13 12:11:25 user: hello

2020-03-13 12:11:28 bot: Hi

当前已实现代码

import json
from datetime import datetime

f = open('1234.json')
 
data = json.load(f)
all_events = [e for e in data.get('events', list()) if e.get('event')=='user' or e.get('event')=='bot']

file_object = open('1234.txt', 'a')
for event in all_events:
    file_object.write(str(event.get('timestamp'))+ " "+ event.get('event')+ ": " + event.get('text', '')+ "\n")

f.close()

当前输出问题

{'$numberDouble': '1671459681.4369426'} user: hello

已知可以用以下代码格式化时间,但不知道如何整合到写入语句中:

ts = int("1584101485")
print(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))

解决方案

只需先从timestamp字典中提取出时间戳值,转换格式后再拼接写入即可,修改后的完整代码如下:

import json
from datetime import datetime

# 用with语句自动管理文件,避免手动关闭的疏漏
with open('1234.json', 'r') as f:
    data = json.load(f)

all_events = [e for e in data.get('events', []) if e.get('event') in ('user', 'bot')]

with open('1234.txt', 'a') as file_object:
    for event in all_events:
        # 提取并转换时间戳
        timestamp_dict = event.get('timestamp', {})
        ts_str = timestamp_dict.get('$numberDouble', '0')
        ts = float(ts_str)
        # 格式化时间字符串
        formatted_time = datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
        # 获取事件类型和文本内容
        event_type = event.get('event', '')
        text = event.get('text', '')
        # 拼接成目标格式并写入
        line = f"{formatted_time} {event_type}: {text}\n"
        file_object.write(line)

关键说明

  1. 用with语句处理文件,无需手动调用close(),代码更简洁安全
  2. 时间戳原数据是带小数的字符串,转换为浮点数后可直接传入utcfromtimestamp,会自动处理毫秒部分
  3. 使用f-string拼接字符串,比+连接更清晰易读
  4. 用event.get('event') in ('user', 'bot')简化条件判断逻辑

内容的提问来源于stack exchange,提问作者Bananachip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:25:38