将以下日志中唤醒词打印次数分别统计出来,并写入excel表中
下面是日志过滤后的基本格式
wakeup.cpp:_handler:116:{"version":"wakeup_aicar_comm_en_v0.2.0.bin","lib_version":"1.5.9.en","status":1,"boundary":0,"wakeupWord":"volume down","major":0,"confidence":0.310892,"frame":4712,"wakeup_frame":4712,"words":{"turn on navi gation":0.2500,"turn on1 navi gation":0.2200,"turn on2 navi gation":0.2200,"turn off navi gation":0.2200,"turn off1 navi gation":0.1700,"radio on":0.4300,"radio on1":0.4300,"radio on2":0.4300,"play music":0.2900,"stop music":0.3000,"play video":0.4000,"video off":0.3700,"next song":0.4600,"previous song":0.3400,"pause music":0.3000,"resume play":0.3100,"resume1 play":0.3100,"resume2 play":0.3100,"resume3 play":0.3100,"volume up":0.4100,"volume down":0.3000,"volume mute":0.3000,"audio on":0.4500,"audio on1":0.4500,"audio on2":0.4500,"bright ness up":0.3400,"bright ness1 up":0.3400,"bright ness down":0.2300,"bright ness1 down":0.2300,"music on":0.4500,"music on1":0.3900,"music on2":0.3900,"video on":0.4100,"video on1":0.4100,"video on2":0.4100,"home page":0.2200,"turn on blue tooth":0.2000,"turn on blue tooth":0.2000}}
wakeup.cpp:_handler:116:{"version":"wakeup_aicar_comm_en_v0.2.0.bin","lib_version":"1.5.9.en","status":1,"boundary":0,"wakeupWord":"volume mute","major":0,"confidence":0.301078,"frame":44536,"wakeup_frame":44536,"words":{"turn on navi gation":0.2500,"turn on1 navi gation":0.2200,"turn on2 navi gation":0.2200,"turn off navi gation":0.2200,"turn off1 navi gation":0.1700,"radio on":0.4300,"radio on1":0.4300,"radio on2":0.4300,"play music":0.2900,"stop music":0.3000,"play video":0.4000,"video off":0.3700,"next song":0.4600,"previous song":0.3400,"pause music":0.3000,"resume play":0.3100,"resume1 play":0.3100,"resume2 play":0.3100,"resume3 play":0.3100,"volume up":0.4100,"volume down":0.3000,"volume mute":0.3000,"audio on":0.4500,"audio on1":0.4500,"audio on2":0.4500,"bright ness up":0.3400,"bright ness1 up":0.3400,"bright ness down":0.2300,"bright ness1 down":0.2300,"music on":0.4500,"music on1":0.3900,"music on2":0.3900,"video on":0.4100,"video on1":0.4100,"video on2":0.4100,"home page":0.2200,"turn on blue tooth":0.2000,"turn on blue tooth":0.2000}}
wakeup.cpp:_handler:116:{"version":"wakeup_aicar_comm_en_v0.2.0.bin","lib_version":"1.5.9.en","status":1,"boundary":0,"wakeupWord":"music on2","major":0,"confidence":0.390208,"frame":82338,"wakeup_frame":82338,"words":{"turn on navi gation":0.2500,"turn on1 navi gation":0.2200,"turn on2 navi gation":0.2200,"turn off navi gation":0.2200,"turn off1 navi gation":0.1700,"radio on":0.4300,"radio on1":0.4300,"radio on2":0.4300,"play music":0.2900,"stop music":0.3000,"play video":0.4000,"video off":0.3700,"next song":0.4600,"previous song":0.3400,"pause music":0.3000,"resume play":0.3100,"resume1 play":0.3100,"resume2 play":0.3100,"resume3 play":0.3100,"volume up":0.4100,"volume down":0.3000,"volume mute":0.3000,"audio on":0.4500,"audio on1":0.4500,"audio on2":0.4500,"bright ness up":0.3400,"bright ness1 up":0.3400,"bright ness down":0.2300,"bright ness1 down":0.2300,"music on":0.4500,"music on1":0.3900,"music on2":0.3900,"video on":0.4100,"video on1":0.4100,"video on2":0.4100,"home page":0.2200,"turn on blue tooth":0.2000,"turn on blue tooth":0.2000}}
# coding=utf-8
import xlwt
import time
from string import digits
file_name = "1234.txt" # 文件名请根据实际情况修改,或者将文件名改为1234.txt,文件和脚本放在同一文件目录下
a = [] # 创建一个空的列表,后面生成列表时使用
wb = xlwt.Workbook()
sheet1 = wb.add_sheet('sheet')
# sheet = wb.add_sheet("'误唤醒结果'+time.strftime('%y%m%d%H%M%s',time.localtime(time.time()))")
with open(file_name,'r') as file_object: # 操作日志文件
lines = file_object.readlines()
for line in lines:
# print(line)
str_list1 = line.split('"wakeupWord":"') # 将str按照"wakeupWord":" 进行切片分割,保留后面的
# print(str_list1)
for words1 in str_list1[1:]: # 切片后保留后面有我们想要信息的部分
# print(words1)
str_list2 = words1.split('"') # 再次以" 进行切片处理,第一个元素就是我们想要的唤醒词
# print(str_list2)
# print(str_list2[0])
a.append(str_list2[0]) # 将所有唤醒词放入a列表中
# print(a)
b = ",".join(a) # 将列表以逗号分割转换为字符串
# print(b)
remove_digits = str.maketrans('', '', digits) # 将字符串中带数字的全部去掉
res = b.translate(remove_digits) # 将字符串中带数字的全部去掉
print(res)
c = res.split(',') # 将字符串转换为列表
# print(c)
mylist = set(c) # 使用set的特性去重,生成新的列表就是误唤醒日志所有误唤醒词集合
print(mylist)
t = 0
for i in mylist: # 统计每个误唤醒词的次数
# print(i)
words_value = c.count(i)
print(i,words_value)
sheet1.write(t,0, i) # t 行数,每次循环换行, 0 第一列 ,i 唤醒词
sheet1.write(t,1,words_value) # t 行数,每次循环换行, 1 第二列 ,words_value 误唤醒次数
t = t + 1
wb.save('result_'+time.strftime('%Y%m%d_%H%M%S', time.localtime(time.time()))+'.xls')
# print(time.strftime('%Y%m%d_%H%M%S', time.localtime(time.time())))
来源:CSDN
作者:pan19881208
链接:https://blog.csdn.net/pan19881208/article/details/103864120