我想从包含字符串和字典的列表对象中检索某些值。如果字典等于某个名称,我想将其添加到输出文件中。
首先我读取一个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"
)