Python - Extraer fragmentos de texto de un archivo

 
Vista:
sin imagen de perfil

Extraer fragmentos de texto de un archivo

Publicado por Damian (3 intervenciones) el 14/09/2017 21:05:13
Captura

Que tal, soy nuevo utilizando el lenguaje Python, actualmente estoy trabajando con un archivo de texto y necesito extraer un fragmento delimitado por dos palabras distintas, y que el texto intermedio pueda ser almacenado en un documento nuevo.
(en la imagen resalto un ejemplo de las palabras que delimitan el texto que deseo obtener)

gracias, espero puedan aclarar mis dudas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de [abZeroX]
Val: 425
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Extraer fragmentos de texto de un archivo

Publicado por [abZeroX] (109 intervenciones) el 15/09/2017 04:42:41
Hola, puedes probar con algo como esto:
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
with open("file.txt") as f:
    content = f.read()
    split_1 = content.split("//STX12//810FXXFGGHXX15291")
    text = ' '.join(' '.join(split_1).strip().split("0720710908"))
 
final_file = open("new_file.txt", "w")
final_file.write(text)
final_file.close()

Nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Extraer fragmentos de texto de un archivo

Publicado por Damian (3 intervenciones) el 15/09/2017 17:08:59
Muchas gracias, tu recomendación me funciono a la perfección para detectar las cadenas que necesito y crear mis archivos por separado, pero el detalle es que me sigue copiando todo el contenido del archivo original en cada uno de los que se generan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import re
infile = open("file.txt", 'r')
test_str = infile.read()
 
regex=r"\S+\bSTX12\b\S+" #Busca el delimitador inicial, ejemplo: //STX12//810FREIGHTLINER15291 
regex2=r"\b17\D\w+"     #Busca el deilimatdor final, ejemplo: 17+00000001011LB
 
matches = re.finditer(regex, test_str)
matches2 = re.finditer(regex2, test_str)
for matchNum, match in enumerate(matches):
 
 for matchNum1, match1 in enumerate(matches2):
 
 
    print (match.group())
    split_1 = test_str.split(match.group())
    print( match1.group())
    text = ' '.join(' '.join(split_1).strip().split(match1.group()))
    final_file = open(match.group()[9:]+".txt", "w") #Los nombres de archivo no pueden contener caractres especiales se tomara el final de la cadena, ejemplo: 810FREIGHTLINER15291 
    final_file.write(text)
    final_file.close()
    text=""
    break
    matchNum1 = matchNum1 + 1
    matchNum = matchNum + 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Extraer fragmentos de texto de un archivo

Publicado por Damian (3 intervenciones) el 15/09/2017 20:54:25
Muchas gracias, tu recomendación me funciono a la perfección para detectar las cadenas que necesito y crear mis archivos por separado, pero el detalle es que me sigue copiando todo el contenido del archivo original en cada uno de los que se generan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import re
infile = open("file.txt", 'r')
test_str = infile.read()
 
regex=r"\S+\bSTX12\b\S+" #Busca el delimitador inicial, ejemplo: //STX12//810FREIGHTLINER15291 
regex2=r"\b17\D\w+" #Busca el deilimatdor final, ejemplo: 17+00000001011LB
 
matches = re.finditer(regex, test_str)
matches2 = re.finditer(regex2, test_str)
for matchNum, match in enumerate(matches):
 
for matchNum1, match1 in enumerate(matches2):
 
 
print (match.group())
split_1 = test_str.split(match.group())
print( match1.group())
text = ' '.join(' '.join(split_1).strip().split(match1.group()))
final_file = open(match.group()[9:]+".txt", "w") #Los nombres de archivo no pueden contener caractres especiales se tomara el final de la cadena, ejemplo: 810FREIGHTLINER15291 
final_file.write(text)
final_file.close()
text=""
break
matchNum1 = matchNum1 + 1
matchNum = matchNum + 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar