python切片处理

一个人想着一个人 提交于 2020-01-12 15:14:23
将以下日志中唤醒词打印次数分别统计出来,并写入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())))
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!