Sacando cadenas de un archivo de texto...

Jordi Ivars jordi en ultimobyte.es
Mie Mar 12 10:11:33 CET 2003


Hola a todos. Estoy haciendo un pequeño programita que debe extraer unos nombres de usuario de un archivo de contraseñas. Basicamente, las entradas del archivo son asi como:

luser:1003:07DD3E84FA249656AAD3B435B51404EE:D0BF2C8BE1E44B2A98CF95600D3D7B03:[UX]:LCT-3E2C7ED0:

Para ello, uso el modulo re, tal como pongo en el codigo de abajo. Divide la linea en partes utilizando como separador los dos puntos (:). Esto crea una lista con todos los elementos del archivo y para sacar los usuarios solo tengo que hace un print a la lista de seis en seis, ya que el nombre de usuario siempre coincide con el 6 (primero saco el 0, luego el 6, el 12, etc). 
Pero no me acaba de convencer. Primero, porque coge todo el archivo de contraseñas y lo mete todo en una lista. Seria mas sencillo que como minimo hiciera una lista por linea. Y segundo porque seria mas sencillo que cogiera una palabra entre un retorno de carro \n y dos puntos y siempre sacaria el nombre de usuario y no tendria que meter todo en listas, no se si me explico suficientemente bien:)

En fin, si a alguien se le ocurriera algo agradeceria un poquitín de ayuda:). Os dejo el código abajo, bastante simplificado (aunque creo que se entiende lo que intenta hacer) para que veais como lo hago.
Y nada, gracias a todos y saludos.

--
abrir=open(('/etc/samba/smbpasswd'),'r')
 
cadena=re.split('\:+', abrir.read())

print cadena[0] #Imprime el primer usuario
print cadena[6] #Imprime el segundo usuario, etc	
--




Más información sobre la lista de distribución Python-es