У меня есть файл журнала, который содержит эту информацию:
- TEST B1
B1_D<4.9b(8.9,9.25)B
B1_D=16.9b(15.9,17.25)B
H32_DOT_FAT<4.9H(5.9,7.25)H
H32_DOT_FBAT<4.9H(5.9,7.25)H
R31=1.5K(1.45K,1.54K)R
R33=3.8K(3.62K,4.17K)R
Я хочу проанализировать этот файл, как показано ниже:
Легенда
SCN : first line
STEP : first part of split for "_" seperator
CHILD : the rest of split for "_" seperator
MESURE_CHILD : the rest of split for "=" separator or " < "
Ожидаемый вывод:
SCN = TEST B1
STEP = B1
CHILD = D
MESURE_CHILD : 4.9b(8.9,9.25)B
CHILD : D
MESURE_CHILD : 16.9b(15.9,17.25)B
STEP = H32
CHILD = DOT_FAT
MESURE_CHILD : 4.9H(5.9,7.25)H
CHILD : DOT_FBAT
MESURE_CHILD : 4.9H(5.9,7.25)H
STEP = R31
CHILD : R31
MESURE_CHILD : 1.5K(1.45K,1.54K)R
STEP = R33
CHILD : R33
MESURE_CHILD : 3.8K(3.62K,4.17K)R
Я использую python 3,8 для кодирования. Вы найдете ниже метод, который я использовал, но я не могу найти решение красиво
def createTreeStandardBloc(self, data_bloc):
index_bloc = 1
data = data_bloc[ 0 ]
if ( "=" in data [ index_bloc ] or "<" in data [ index_bloc ] ) :
prefix = re.split(r'(<|=)\s*', data [ index_bloc ] )[ 0 ]
if ( "_" in prefix ):
step_name = re.split( "_" , prefix )[ 0 ]
else:
step_name = prefix
print("STEP : "+step_name)
for index_bloc in range( 2 , len( data ) ) :
if ( "=" in data [ index_bloc ] or "<" in data [ index_bloc ] ) :
prefix_pdm = re.split(r'(<|=)\s*', data [ index_bloc ] )[ 0 ]
if ( "_" in prefix_pdm ):
step_name_temp = re.split( "_" , prefix_pdm ) [ 0 ]
pdm = re.split( "_" , prefix_pdm ) [ 1 ]
else:
step_name_temp = prefix_pdm
pdm = prefix_pdm
if ( step_name_temp != step_name ):
step_name = step_name_temp
print("STEP : "+step_name)
print("CHILD : "+pdm)
else :
print("CHILD : "+pdm)