当字典等于某个名称时,如何在字典列表中获得字典的值?



我想从包含字符串和字典的列表对象中检索某些值。如果字典等于某个名称,我想将其添加到输出文件中。

首先我读取一个json文件,看起来像这样:

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

我有事件等于"user"还有那些等于"两者"的。我最后想要的是一个输出文件,每一行都有user和bot。在行开头,我还希望使用时间戳,格式为人类可读的时间,并在行末尾使用像

这样的文本。

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

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

但是,我不知道如何访问"timestamp"的值,格式化它,然后与"user"一起打印。和";text">

到目前为止我所做的是:

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'))

但是我不知道如何在我的file_object中包装这个。写命令

您需要解析timestamp字典中的$numberDouble值,而不是获取timestamp键的值:

file_object.write(
datetime.utcfromtimestamp(float(event['timestamp']['$numberDouble'])).strftime('%Y-%m-%d %H:%M:%S') + " "+ event.get('event')+ ": " + event.get('text', '')+ "n"
)

相关内容

  • 没有找到相关文章

最新更新