Python - Pasar cadena a lista(Python)

   
Vista:

Pasar cadena a lista(Python)

Publicado por Teo (2 intervenciones) el 05/03/2012 21:41:42
Hola, dado un archivo con el siguiente contenido: nombre1:nombre2:nombre3.......
quiero visualizarlo de la siguiente manera:

nombre1:
nombre2
nombre3
....


Lo que pensaba que iba a ser muy fácil se me está convirtiendo en un problema. He intentado solucionarlo de la siguiente manera:

fich=open(nom_fich,'r')
texto=fich.readlines()

lista=texto.split(':')
..........
............


Pero me da el siguiente error: "AttributeError: 'list' object has no attribute 'split'.
Alguna idea? Mi intención era crear una lista con la cadena obenida y, mediante un for-in, mostrar los campos.

Gracias.
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 xve

Pasar cadena a lista(Python)

Publicado por xve (1229 intervenciones) el 05/03/2012 22:15:42
Hola Teo, cuando haces readlines, lo que haces, es recibir una lista de valores con cada linea del archivo, por lo que no puedes hacer un split de una lista, ya que el split se realiza únicamente de una variable.
Para mostrarlos por pantalla, puedes hacer algo así:

1
2
3
4
fich=open(nom_fich,'r')
listaValores=fich.readlines()
for n in listaValores:
    print n

Comentanos, ok?
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

Pasar cadena a lista(Python)

Publicado por Teo (2 intervenciones) el 05/03/2012 22:52:34
Gracias por tu respuesta xve.

Llevo con Python desde ayer y me pareció leer en algún manual que readlines guardaba todo el archivo en una cadena. Lo he corregido utilizando read (que es la que sí hace eso).

Como decía necesitaba un script que, dado un archivo con el formato nombre1:nombre2:nombre3: .... :nombreN obtuviese esa información y la mostrase en el formato:

nombre1:
nombre2
nombre3
...
nombreN


Fácil, pero me he ofuscado con el readlines.

Finalmente quedaría algo así:

1
2
3
4
5
6
7
fich=open(nom_fich,'r')
texto=fich.read()
lista=texto.split(':')
print lista[0]+":"
for registro in lista[1:]:
   print "\t",registro
fich.close()


Gracias por tu ayuda.
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