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 )