Análisis de expresiones regulares en un archivo de texto.
Tengo un archivo de texto grande que contiene información de la siguiente manera:
0 / END OF ONE DATA, BEGIN SECOND DATA
361,315,0,’1 ‘,1,1,1,0,0,2,’NAT1 ‘,1,1115,1,0,0,0,0,0,0
0.0055501,0.12595,100
1,69,0,100,100,100,1,36,1.1,0.9,1.04283,1.001283,33,0,0,0, /[name1 ]/
0.975,138
481,417,0,’1 ‘,1,1,1,0,0,2,’KAT1 ‘,1,115,1,0,0,0,0,0,0
0.00762817,0.14163,60
1,69,0,60,60,60,1,48,1.1,0.9,1.011735,0.917735,33,0,0,0, /[name2 ]/
0 / END OF SECOND DATA, BEGIN THIRD DATA
Quiero obtener lo siguiente en un dataframe:
name1
name2
Intenté lo siguiente:
import os, pandas as pd
from io import StringIO
fn = r’C:\Users\asdert\Downloads\Network.RAW’
file = open(fn)
line = file.read() # .replace(“\n”, “$$$$$”)
file.close()
start = line.find(‘END OF ONE DATA, BEGIN SECOND DATA’) + 1
end = line.find(‘END OF SECOND DATA, BEGIN THIRD DATA’)
branchData = line[start:end]
df = pd.read_csv(StringIO(branchData), sep=’\n’)
No estoy seguro de cómo abordar esto. Básicamente, tengo que analizar el texto entre /*
y */
e ignorar las líneas que no tengan /*
y */
.
davy.ai
Para extraer la información entre
/*
y*/
, se puede utilizar regex con el módulore
en Python. Aquí hay una forma de abordarlo:/*
y*/
. Por ejemplo, puede usar el patrón/\*(.+?)\*/
para coincidir con cualquier cosa entre/*
y*/
.Para cada línea que contenga el patrón, extraiga el nombre dentro de los corchetes
[]
utilizando otro patrón regex, como\[(.+?)\]
.Agregue el nombre extraído a la lista
nombres
.Aquí está el código completo:
Esto debería producir la siguiente salida:
Luego, puede convertir esta lista en un dataframe de pandas usando: