Bueno, tengo una pregunta que siento que me han respondido varias veces, por lo que encontré aquí. Sin embargo, como novato, realmente no puedo entender cómo realizar una operación realmente básica.
Aquí está la cosa :
tengo un .xls
y cuando uso xlrd para obtener un valor solo estoy usando sh.cell(0,0)
(asumiendo que sh es mi hoja);
si lo que está en la celda es una cadena, obtengo algo como text:u'MyName'
y solo quiero mantener la cadena 'MyName'
;
si lo que está en la celda es un número, obtengo algo como el number:201.0
y solo quiero mantener el número entero 201
.
Si alguien puede indicarme qué debo hacer para extraer solo el valor, con el formato que quiero, gracias.
sh.cell (x, y) devuelve una instancia de la clase Cell. Cuando imprime sh.cell (x, y) está devolviendo la función de reproducción de la clase (para que imprima type: value).
Deberías intentarlo:
cell = sh.cell(x,y) print(cell.value)
No puedo probar esto ya que no tengo xlrd pero, creo que funcionará dada la documentación: https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html#sheet. Clase celular
También puede simplemente extraer valores utilizando xlrd en lugar de obtener la celda de Excel completa devuelta:
book = xlrd.open_workbook('example.xls') first_sheet = book.sheet_by_index(0) print first_sheet.row_values(0)
Obtiene los valores de la primera fila en la primera hoja.
Puede usar cortes con los valores de fila (y de manera similar para columnas). Así que para obtener valores de una hoja entera:
cells = [] for i in range(first_sheet.nrows): cells.append(first_sheet.row_values(rowx=i,start_colx=0,end_colx=None))
Puede haber formas más elegantes de usar xlrd, pero eso me funcionó.
La respuesta correcta a esto es simplemente usar la función Cell.value
. Esto devolverá un número o una cadena Unicode dependiendo de lo que contenga la celda.
Esto le dará el valor del contenido de una celda en Excel.
var = sh.cell(x,y) print var.value
Pero el tipo de estos datos sigue siendo ‘Unicode’. Para convertir en una cadena (ascii):
var.value.encode('ascii','ignore')