Pregunta

http: // scienceoss. com / lectura-excel-archivos-de-python / comentario-página-1 / # comment-1051

Desde el enlace de arriba, que utiliza esta utilidad para leer un archivo XLS. Si el archivo XLS contiene diferentes caracteres de idiomas como el chino o el hindi, que no emite correctamente. ¿Hay una solución para esto?

Tras Google, he encontrado esto:

import xlrd

def upload_xls(dir,file,request):
    try:
        global msg
        global row_num
        row_num = []
        header_arr = []
        global file_path
        file_path = dir
        #reader = csv.reader(open(file), delimiter='#', quotechar='"')
        book = xlrd.open_workbook('dodgy.xls',encoding='cp1252')   ##To specify UTF8-encoding
        wb.sheet_names()
        sh =  wb.sheet_by_index(0)
        valid_xl_format = 0
        invalid_xl_format = 0
     except:
        print "Error

Sin embargo, hay un error en el book = open_workbook('dodgy.xls',encoding='cp1252') línea:

  

TypeError: open_workbook() got an unexpected keyword argument 'encoding'

¿Fue útil?

Solución

De acuerdo con la XLRD módulo documentación , el parámetro correcto es: encoding_override = "CP1252" y no encoding = "CP1252" .

Por la forma en que va a importar el módulo XLRD usted debe llamar a la función como xlrd.open_workbook pero en el código de ejemplo se utiliza la función directamente, como si se hubiera usado "de importación XLRD *".

Otros consejos

[des] reclamante:. Soy el autor de XLRD

  

Si el xls contiene caracteres diferentes idiomas, como el lomo o   hindi.It no emitirá el wordings.Is exactas hay un trabajo en torno a   este ..

El argumento encoding_override es (como se explica en la documentación) que se utiliza sólo para archivos de edad (producidos por Sobresale anteriores a Excel 97 (que es el año 1997)) y sólo entonces cuando la registrada internamente "página de códigos" o es incorrecto.

Nota: el archivo antiguo con caracteres chinos:. Reemplazar con 'CP1252' está garantizado para lanzar una excepción

Nota: el archivo antiguo con caracteres "Hindi" (devanagari?): Muy poco probable ... por lo que yo sé nunca hubo una página de códigos apoyado oficialmente por cualquiera de las secuencias de comandos ISCII, y no he oído hablar de cualquier uno no oficial. Cualquier información sobre este tema y / o archivos de muestra sería muy bienvenido.

Excel 97 y versiones posteriores registrar todos los datos de texto en (efectivamente) UTF-16LE. El encoding_override se ignora si el archivo es un válido Excel-97-o más-archivo.

Cualquiera que sea la versión de Excel que produce el archivo, (como se documenta) XLRD vuelve Unicode cadenas. Sus problemas son mucho más propensos a estar relacionados con la forma en que está visualizando o convertir esas cadenas Unicode.

Para obtener más ayuda, editar su pregunta para mostrar ejemplos de la salida real junto con el "texto exacto".

Hay un módulo csv en la biblioteca estándar, que se ocupa de Unicode en Python 3.1.

Advertencia:. en Python 2.x la biblioteca csv hace no mango Unicode

Hay una pregunta similar. La respuesta fue la salida estaba causando problema, no XLRD.

respuesta sobre cómo configurar la secuencia de comandos a UTF-8 -> https://stackoverflow.com/a/17628350/713

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top