批量提取TXT特定词语的前后几行,并且按照txt名字输出到excel

查看 32|回复 2
作者:主演6666   
文件夹里有多个文本文件txt格式的,里面是测试log,有pass,有fail,需要提取fail的信息,如下红色的是我要提取的值6275那一行,我要知道哪个Frequency fail,而不是fail power具体是多少,将
[color=]Ant : 1, Frequency : 6275, Target Power : 17.5, EHT_MU MCS7 BW-20
这一行输出到excel,按照文件的名字命名,测试一般都是几千个一起测试,会有几千个log,一个log里面几百个测试
[color=]
Frequency
,(下面展示的是几百个
[color=]
Frequency中的一个
),
fail的
[color=]
Frequency每个不一样
但是测试log格式是固定的,
需要定位到特定词语fail,
[color=]将fail往上数第二行的数据
[color=]信息提取出来
[color=],有的可能一个log fail好几个,需要合并
,log太大附件上传不了,
[03:17:15.090]
[color=]Ant : 1, Frequency : 6275, Target Power : 17.5, EHT_MU MCS7 BW-20
[03:17:16.241] Ant 1 Cable Loss................. 17.94 (dB)
[03:17:16.241]
[color=](Fail)
Power .........................  16.46 (dBm)    ( 16.50 ~ 18.50 )
[03:17:16.241] (Pass) EVM ........................... -45.11 (dB)     ( -9999.00 ~ -27.00 )
[03:17:16.241] (Pass) Freq Error ....................  -2.99 (ppm)    ( -10.00 ~ 10.00 )
[03:17:16.241] (Pass) Symbol Clk Error...............  -2.78 (ppm)    ( -10.00 ~ 10.00 )
[03:17:16.241] (Pass) Violation .....................   0.00 (%)      ( 0.00 ~ 0.00 )
[03:17:16.241] (Pass) LO Leakage .................... -51.06 (dBc)    ( -9999.00 ~ -20.00 )

测试, 的是

黄薛海   

[Python] 纯文本查看 复制代码import os
import pandas as pd
# 定义文件夹路径
folder_path = 'd:\\Users\\Administrator\\Desktop\\import'
# 定义输出Excel文件路径
output_excel_path = '输出Excel文件路径.xlsx'
# 初始化一个空的DataFrame来存储结果
result_df = pd.DataFrame(columns=['文件名', '数据'])
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
    if filename.endswith('.txt'):
        file_path = os.path.join(folder_path, filename)
        with open(file_path, 'r', encoding='utf-8') as file:
            lines = file.readlines()
        
        # 查找包含“Fail”的行
        for i, line in enumerate(lines):
            if '(Fail)' in line:
                # 提取包含“Fail”的行的上两行数据
                if i > 1:
                    prev_line = lines[i-2].strip()
                    new_row = pd.DataFrame({
                        '文件名': [filename],
                        '数据': [prev_line]
                    })
                    result_df = pd.concat([result_df, new_row], ignore_index=True)
# 将结果写入Excel文件
result_df.to_excel(output_excel_path, index=False)
print('Done!')
lisongmei   

[Python] 纯文本查看 复制代码import re,os
import pandas as pd
#路径
path=r'C:\Users\lison\Desktop\新建文件夹'
# 倒数2行正则
cp=re.compile('(.*?)\n.*?\n.*?(?:Fail)')
#空字典待装数据
dic={}
for file in os.listdir(path):
        if file.endswith('.txt'):
                with open(os.path.join(path,file),mode='r',encoding='utf8') as f:
                        txt=f.read()
                        #正则匹配
                        lsts=cp.findall(txt)
                        #若匹配,装入字典
                        if lsts:
                                dic[file]=lsts
#将字典转为DataFrame并转置
df=pd.DataFrame(dic).T
#保存为excel
df.to_excel('hello.xlsx')
您需要登录后才可以回帖 登录 | 立即注册

返回顶部