regulares regular python3 online linea inicio funcion expresiones expresion ejemplos cadenas python regex nlp part-of-speech

python3 - Cómo extraer números de líneas que coinciden con una expresión regular en un archivo de texto



funcion find python (2)

Estoy haciendo un proyecto de traducción automática estadística en el que necesito extraer los números de línea de un archivo de texto etiquetado POS que coinciden con una expresión regular (cualquier verbo de compás no separado con la partícula ''fuera''), y escribir los números de línea a un archivo (en python).

Tengo esta expresión regular: ''/ w * _VB.? / Sout_RP'' y mi archivo de texto etiquetado POS: ''Corpus.txt''. Me gustaría obtener un archivo de salida con los números de línea que coincidan con la expresión regular mencionada anteriormente, y el archivo de salida solo debería tener un número de línea por línea (sin líneas vacías), por ejemplo:

2

5

44

Hasta ahora, todo lo que tengo en mi script es el siguiente:

OutputLineNumbers = open(''OutputLineNumbers'', ''w'') with open(''Corpus.txt'', ''r'') as textfile: phrase=''/w*_VB.?/sout_RP'' for phrase in textfile: OutputLineNumbers.close()

¿Alguna idea de cómo resolver este problema?

¡De antemano, gracias por tu ayuda!


puedes hacerlo directamente con bash si tu expresión regular es grep amigable. muestre los números de línea usando "-n"

por ejemplo:

grep -n "[1-9][0-9]" tags.txt

dará salida a las líneas correspondientes con los números de línea incluidos al principio

2569:vote2012 2570:30 2574:118 2576:7248 2578:2293 2580:9594 2582:577


Esto debería resolver su problema, suponiendo que tiene la expresión regular correcta en la variable ''frase''

import re # compile regex regex = re.compile(''[0-9]+'') # open the files with open(''Corpus.txt'',''r'') as inputFile: with open(''OutputLineNumbers'', ''w'') as outputLineNumbers: # loop through each line in corpus for line_i, line in enumerate(inputFile, 1): # check if we have a regex match if regex.search( line ): # if so, write it the output file outputLineNumbers.write( "%d/n" % line_i )