Sacando cadenas de un archivo de texto...
Jose Alejandro Perez Rubio
perezj en si.uji.es
Mie Mar 12 11:12:06 CET 2003
Jordi Ivars wrote:
>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
>--
>
>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>
Quiza esto ...
for line in file('/etc/samba/smbpasswd' ) :
print line.split( ':')[0]
Más información sobre la lista de distribución Python-es