[Python-es] Salto de linea

Carlos Latorre clatorreg en dphuesca.es
Mar Oct 16 15:12:39 CEST 2012


El 16 de octubre de 2012 13:38, kausdiv <kausdiv en gmail.com> escribió:

>  Hola Luis. Gracias por contestarme.
>
> Verás row[2] y 5 se guardan en una lista para ir comprobando si existe la
> linea. Pero no se guarda.
>
> Lo que se guarda es row tal como se lee:
>
> if s in cm:
>                 cn += 1
>     else:
>           cm.append(s)
>           swriter.writerow(row)
>
> Es decir si s (row[2] y row[5]) no esta en la lista cm (donde van estos
> dos registros unidos.) Entonces garda s en la lista cm para comprobar más
> adelante y guarda row tal como se leyó en el archivo de salida.
>
> Pero si ves, row no ha sufrido modificación alguna. Eso es lo que me
> desconcierta. Por cierto probé swriter.writerow(row[:-1]) y no ha
> funcionado.
>

prueba
swriter.writerow(row[:-1]+[row[-1][:-1]])
a ver que pasa
Saludos,
Carlos L.

>
> ¿ que podrá ser ?
>
> Gracias.
>
>
>  El 16/10/2012 13:22, Luis Garcia Merino escribió:
>
> Buenas,
>
> supongo que es porque el archivo CSV, al final de cada fila, tiene un
> salto de línea. Imagino también que row[5] es la última columna del CSV y,
> por lo tanto, tiene ese salto de línea. Podrías solucionarlo haciendo:
>
> s = row[2]+" "+row[5][:-1]
>
> en vez de
>
>  s = row[2]+" "+row[5]
>
>
>
>  Yo uso esto para limpiar las celdas de un CSV (y pasarlas a utf-8):
>
>  def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs):
>
>      csv_reader = csv.reader(unicode_csv_data,dialect=dialect, **kwargs)
>
>     for row in csv_reader:
>         # en el yield puedes hacer lo que quieras con la celda... por
> ejemplo .strip() o el lower() que haces tu
>         yield [unicode(cell.replace("\n",""), 'utf-8') for cell in row]
>
>
>  def haz_lo_que_sea_con_el_csv( csv_file ):
>
>      f = open(csv_file, 'r')
>
>      csv_reader = unicode_csv_reader( f )
>
>      # con esto lees una línea
>     row = csv_reader.next()
>
>
>  No sé si es la mejor manera de hacerlo, pero funciona :)
>
>  Un saludo.
>
>    ------------------------------
> *De:* kausdiv <kausdiv en gmail.com> <kausdiv en gmail.com>
> *Para:* La lista de python en castellano <python-es en python.org><python-es en python.org>
> *Enviado:* Martes 16 de octubre de 2012 12:56
> *Asunto:* [Python-es] Salto de linea
>
> Hola.
>
> os comento algo que me pasa casi siempre que uso ficheros. :-(
>
> Tengo un archivo CSV donde hay muchas lineas repetidas. He preparado el
> siguiente programa que busca los registros repetidos.
> La idea es que se crea un nuevo archivo "bb.css" donde van todos los
> registros menos los repetidos.
>
> El problema es que se agrega un salto de linea que no debería ("\n") de
> forma que el resultado es algo as:
> ---------
> linea ok
>
> linea ok
> ---------
> Entre cada linea ok hay una linea en blanco.
>
> Este es el programa:
> -----------------------------------------
> import csv
>
> cn=0 # para contar reptediso
> farchi="aa.csv"  # archivo con todos los registros
> cm=[]  # Para poder conocer los repetidos.
>
> f=open("bb.csv","w")  # Archivo destino con los registros sin repetir.
> swriter = csv.writer(f, delimiter=',')
>
> with open(farchi, 'rb') as csvfile:
>     spamreader = csv.reader(csvfile, delimiter=',')
>     for row in spamreader:
>         if len(row)>5:
>             s = row[2]+" "+row[5]
>             s = s.lower()
>             if s in cm:
>                 cn += 1
>             else:
>                 cm.append(s)
>                 swriter.writerow(row)
>
> f.close()
>
> print "Registros duplicados ",cn
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
>
> _______________________________________________
> Python-es mailing listPython-es en python.orghttp://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121016/39625aca/attachment.html>


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