[Python-es] Problemas al cargar CSV con registro vacío

iaBots Bots iabots.mail en gmail.com
Jue Jun 8 08:49:09 EDT 2017


Te recomiendo cargar primero el csv y despues aplicarle el replace
dentro de un if que compruebe si esta vacio

El 28/5/17, Álvaro Justen [Turicas] <alvarojusten en gmail.com> escribió:
> Hola, Horacio! Que tal?
>
> Yo estoy trabajando en una librería que tiene cómo objetivo crear una
> experiencia mas facil para trabajar con datos tabulares:
>     http://turicas.info/rows/
>
> Yo implementé soporte a locale, entoncoes puede utilizar el context
> manager para que la librería haga la identificación de
> floats/ints/etc. en su idioma, cómo en:
>     http://turicas.info/rows/locale.html
>
> Y también puede ver en este ejemplo (que utiliza la interfaz de línea
> de comando en vez de la librería):
>     https://github.com/turicas/rows/blob/develop/examples/cli/convert.sh
>
> Tu puede incluso tener su propio tipo (basado en rows.field.Field),
> para hacer otros tipos de conversión que no son soportados por
> default, como en este ejemplo:
>
> https://github.com/turicas/rows/blob/develop/examples/library/custom_field.py
>
> Suerte,
>  Álvaro Justen "Turicas"
>     turicas.info
>    +55 41 999 311 221
>
>
> 2017-05-25 7:48 GMT-07:00 Horacio <horacio9573 en gmail.com>:
>> Buenas,, cuando intento cargar un archivo en formato CSV y ocurre una
>> situación como esta,,,
>>
>> L1000_06;0,4435295926;3,08433806394649E-06;;;;
>> L2000_01;;;0,0469908055;0,1543794704;0,3073072258;1,0129957616
>>
>> donde hay registros con campos sin contenido cuando hago correr esta
>> porción de código,,,
>>
>> try:
>>    i=0
>>    lector=csv.reader(entrada,delimiter=';')
>>    for registro in lector:
>>        if (i>0) and (len(registro)>0):
>>            a1=registro[0]
>>            a2=float(registro[1].replace(",", "."))
>>            a3=float(registro[2].replace(",", "."))
>>            a4=float(registro[3].replace(",", "."))
>>            Archivo.append(a1)
>>            IDm.append(a2)
>>            Mu.apped(a3)
>>            Tiempo.apped(a4)
>>        i+=1
>> finally:
>>    entrada.close()
>>
>> ve devuelve la excepción,,,
>>
>> Traceback (most recent call last):
>>   File "carga_base_azul2.py", line 33, in <module>
>>     a3=float(registro[2].replace(",", "."))
>> ValueError: could not convert string to float:
>>
>> Cómo puedo hacer que cada vez que encuentre un registro con campo sin
>> contenido además de no cortarse, le asigne -1 como contenido,,,
>>
>> Si alguien tiene una idea gracias,,, Horacio
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>


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