adamzhl 2022-07-28 11:47 采纳率: 64.7%
浏览 147
已结题

txt文件提取数据到excle文件

txt文件提取数据到excle文件,输出到excle文档操作不熟悉

TXT部分文档:

07-18_12.17.01.550[localplayer][D][14866][face.cc(100)]:ABR Get Next Level: 4
07-18_12.17.01.550[localplayer][D][14866][PlayerStatHelper.cpp(092)]:ABR setAbrs idx:0 bitrate:379203 bwe:8629337 buffer:9951 switchBr:0
07-18_12.17.01.550[localplayer][D][14866][Controller.cpp(741)]:get next level 0
07-18_12.17.02.056[localplayer][D][14866][face.cc(100)]:ABR Get Next Level: 4
07-18_12.17.02.056[localplayer][D][14866][StatHelper.cpp(092)]:ABR setAbrs idx:4 bitrate:1422296 bwe:8770076 buffer:21424 switchBr:0
07-18_12.17.02.056[localplayer][D][14866][Controller.cpp(741)]:get next level 4
07-18_12.17.02.056[localplayer][D][14866][Controller.cpp(1900)]:actual pause download
07-18_12.17.13.887[localplayer][D][14866][face.cc(100)]:ABR Get Next Level: 4
07-18_12.17.13.887[localplayer][D][14866][StatHelper.cpp(092)]:ABR setAbrs idx:4 bitrate:1422296 bwe:9168943 buffer:22838 switchBr:0
07-18_12.17.13.887[localplayer][D][14866][Controller.cpp(741)]:get next level 4
07-18_12.17.13.887[localplayer][D][14866][Controller.cpp(1900)]:actual pause download
07-18_12.17.13.887[localplayer][D][14866][Controller.cpp(1291)]:HlsPlayManager stat change 4->5

从Txt文档中提取对应字段的数据,需要采集的数据大多都是这三行的形式,字段一致,数据不同

img

img

img

需要的结果

img

问题相关代码,请勿粘贴截图
```python

fi = open("yylocalplayer_jni_2022_07_27_16_48_39_1.txt","r",encoding="utf-8")


line = fi.readlines()    #整个文件读入


key_word = "Asbrs "
datas = line.split(key_word)[1]   #按指定单词分割
items=datas.split(' ')
kvs={}
for item in items:
    if len(item.split(':')) == 2:
        k = item.split(':')[0]
        v = item.split(':')[1]
        kvs[k] = v

fi.close()
  • 写回答

7条回答 默认 最新

  • herosunly Python领域优质创作者 2022-07-28 12:37
    关注
    import pandas as pd
     
    s='''07-18_12.17.01.550[localplayer][D][14866][face.cc(100)]:ABR Get Next Level: 4
    07-18_12.17.01.550[localplayer][D][14866][PlayerStatHelper.cpp(092)]:ABR setAbrs idx:0 bitrate:379203 bwe:8629337 buffer:9951 switchBr:0
    07-18_12.17.01.550[localplayer][D][14866][Controller.cpp(741)]:get next level 0
    07-18_12.17.02.056[localplayer][D][14866][face.cc(100)]:ABR Get Next Level: 4
    07-18_12.17.02.056[localplayer][D][14866][StatHelper.cpp(092)]:ABR setAbrs idx:4 bitrate:1422296 bwe:8770076 buffer:21424 switchBr:0
    07-18_12.17.02.056[localplayer][D][14866][Controller.cpp(741)]:get next level 4
    07-18_12.17.02.056[localplayer][D][14866][Controller.cpp(1900)]:actual pause download
    07-18_12.17.13.887[localplayer][D][14866][face.cc(100)]:ABR Get Next Level: 4
    07-18_12.17.13.887[localplayer][D][14866][StatHelper.cpp(092)]:ABR setAbrs idx:4 bitrate:1422296 bwe:9168943 buffer:22838 switchBr:0
    07-18_12.17.13.887[localplayer][D][14866][Controller.cpp(741)]:get next level 4
    07-18_12.17.13.887[localplayer][D][14866][Controller.cpp(1900)]:actual pause download
    07-18_12.17.13.887[localplayer][D][14866][Controller.cpp(1291)]:HlsPlayManager stat change 4->5'''
     
    df = pd.DataFrame(columns=['firstlevel', 'idx', 'bitrate', 'bwe', 'buffer', 'switchBar', 'nextLevel'])
    find_lines = re.findall('Get Next Level.*?idx:.*?get next level.*?\n', s, flags=re.DOTALL)
     
    for i in find_lines:
        list_value = re.findall(r':\s{0,1}(\d+)', i)
        list_value.extend(re.search('get next level (\d+)', i)[1])
        df.loc[len(df)] = list_value
     
    df.to_excel('result.xlsx', index=False)
    

    您实际代码可用下面的,把filename替换文件对应的路径即可:

    import re
    import pandas as pd
     
    with open('filename', 'r') as f:
        s = f.read()
     
    df = pd.DataFrame(columns=['firstlevel', 'idx', 'bitrate', 'bwe', 'buffer', 'switchBar', 'nextLevel'])
    find_lines = re.findall('Get Next Level.*?idx:.*?get next level.*?\n', s, flags=re.DOTALL)
     
    for i in find_lines:
        list_value = re.findall(r':\s{0,1}(\d+)', i)
        list_value.extend(re.search('get next level (\d+)', i)[1])
        df.loc[len(df)] = list_value
     
    df.to_excel('result.xlsx', index=False)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 8月5日
  • 已采纳回答 7月28日
  • 请采纳用户回复 7月28日
  • 修改了问题 7月28日
  • 展开全部

悬赏问题

  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥20 jupyter保存图像功能的实现
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符