Tengo un archivo con datos específicos que me gustaría extraer.Crear archivo de salida con varias líneas (Python)
El archivo tiene este aspecto:
DS User ID 1
random garbage
random garbage
DS N user name 1
random garbage
DS User ID 2
random garbage
random garbage
DS N user name 2
Hasta ahora tengo:
import sys
import re
f = open(sys.argv[1])
strToSearch = ""
for line in f:
strToSearch += line
patFinder1 = re.compile('DS\s+\d{4}|DS\s{2}\w\s{2}\w.*|DS\s{2}N', re.MULTILINE)
for i in findPat1:
print(i)
Mi salida a la pantalla se ve así:
DS user ID 1
DS N user name 1
DS user ID 2
DS N user name 2
Si escribir en el archivo usando :
outfile = "test.dat"
FILE = open(outfile,"a")
FILE.writelines(line)
FILE.close()
Todo es empujado a una sola línea:
DS user ID 1DS N user name 1DS user ID 2DS N user name 2
puedo vivir con el primer escenario para que la salida. Idealmente, me gustaría quitar el 'DS' y 'DS N' del archivo de salida y hacer que se separe por comas.
User ID 1,user name 1
User ID 2, username 2
¿Alguna idea sobre cómo lograr esto?
Hola, bienvenido a StackOverflow. Tómese un minuto para familiarizarse con el editor, especialmente con el botón de Código '{}' que puede usar para formatear el código. –
Esto obviamente no es su programa real. Por un lado, nunca usas la expresión regular. Tampoco coincide con las muestras que proporcionó, al menos no la mayoría de ellas. Nunca se define 'findPat1'. –
Por favor, describa claramente cómo son sus datos de entrada y qué criterios está usando para que coincidan. Según sus muestras, parece que buscar líneas que comiencen con 'DS 'debería ser suficiente; si no lo es, especifique las reglas. Parece que intenta hacer coincidir las entradas de nombre de usuario/nombre de usuario correspondientes. Seguramente podemos mostrarte una mejor manera de hacerlo, si sabemos lo que estás haciendo. –