python 解析特定格式的文本文件 - 删除不需要的行

注:练习的文本数据在附件资源里 https://download.csdn.net/download/qingfengjuechen/11943254 


import easygui as g
import os
 
file_path=g.fileopenbox(default='*.txt')
import numpy as np
import re
#file_path='E:/audio_data_hex_text.txt'

keywords = [
  "---",
  "alsa_write",
  "Wifi",
  "dler"
]
isIn = 0

list_nums = []
a_bytes = []
j = 0
f = open(file_path + ".bin", "wb")
f.close()
j = 0
with open(file_path, 'r') as txtfile:
    lines=txtfile.readlines()
txtfile.close()
with open(file_path, 'w') as newtxtfile:
            
    #print(lines)
    print(len(lines))
    for i,rows in enumerate(lines):
        #print(j)
        j = j+1
        
        ##print(rows)
        ##print("strs len=",len(strs)) # strs len=7
        ##9377 : 0x0027e342: 0xfffa0000 0xfffa0000 0xfff60000 0xfff60000
        strs=rows.split(' ', -1 )
        strs_num = len(strs)
        ##print(strs)
        ##print(strs[3]+' '+strs[4]+' '+strs[5]+' '+strs[6])     
        
        try:
            if i in range(0,len(lines)):
                isIn = 0;
                for keyword in keywords:
                    if keyword in rows:
                        isIn = 1;
                        break
                if (isIn == 1):
                    ##print(i)
                    print("invalid keywords: ", i, rows)
                    continue
                elif (strs_num !=7):
                    ##print(i)
                    print("invalid format: ", i, rows)
                    continue
                else:
                    newtxtfile.write(rows)
                         
                data0=int(strs[3],16)
                data1=int(strs[4],16)
                data2=int(strs[5],16)
                data3=int(strs[6],16)
                ##data0=int('0xffffffff',16)
                ##print(data0)
                ##a_bytes = bytes.fromhex(strs[3][2:])
                ##print(a_bytes)
                f = open(file_path + ".bin", "ab+")
                bytes_data0=data0.to_bytes(length=4,byteorder='big',signed=False)
                bytes_data1=data1.to_bytes(length=4,byteorder='big',signed=False)
                bytes_data2=data2.to_bytes(length=4,byteorder='big',signed=False)
                bytes_data3=data3.to_bytes(length=4,byteorder='big',signed=False)
                ##print(bytes_data0)
                f.write(bytes_data0)
                f.write(bytes_data1)
                f.write(bytes_data2)
                f.write(bytes_data3)
                f.close()
        except:
            print("exception data line: ", i)
            continue      
            
newtxtfile.close()

猜你喜欢

转载自blog.csdn.net/qingfengjuechen/article/details/102824818