Utilizzando XLRD per leggere file XLS di Excel contenente cinese e / o caratteri Hindi
Domanda
http: // scienceoss. com / lettura-Excel-files-da-python / comment-page-1 / # comment-1051
Dal link qui sopra, ho usato questo programma di utilità per leggere un file XLS. Se il file XLS contiene diversi caratteri delle lingue come il cinese o l'hindi, ma non emette correttamente. C'è una soluzione per questo?
Dopo Googling, ho trovato questo:
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
Ma c'è un errore nella linea book = open_workbook('dodgy.xls',encoding='cp1252')
:
TypeError: open_workbook() got an unexpected keyword argument 'encoding'
Soluzione
Secondo il XLRD modulo di documentazione , il parametro corretto è: encoding_override = "cp1252" e non codifica = "cp1252" .
Dal modo in cui si sta importando il modulo XLRD si dovrebbe essere chiamando la funzione come xlrd.open_workbook ma nel codice di esempio si utilizza direttamente la funzione, come se si fosse usato "dal import XLRD *".
Altri suggerimenti
[dis] claimer:. Sono l'autore di XLRD
Se il xls contiene diversi caratteri delle lingue come chine o hindi.It non uscita i wordings.Is esatte lì un lavoro in giro per il questo ..
L'argomento encoding_override è (come spiegato nella documentazione) utilizzata solo per i file vecchi (prodotti da Eccelle precedenti a Excel 97 (che è l'anno 1997)) e solo poi, quando il suo interno-registrato "tabella codici" è mancante o errato.
Nota: Vecchio file con i caratteri cinesi:. Override con 'CP1252' è garantito per sollevare un'eccezione
Nota: Vecchio file con (Devanagari?) Personaggi "Hindi": molto improbabile ... per quanto ne so non c'è mai stato un tabella codici ufficialmente supportato per qualsiasi degli script ISCII, e non ho sentito parlare di qualsiasi uno non ufficiale. Tutte le informazioni su questo argomento e / o file di esempio sarebbe molto benvenuto.
Excel 97 e versioni successive registrare tutti i dati di testo in (efficace) UTF-16. L'encoding_override viene ignorato se il file è una valida Excel-97 o versione successiva del file.
Qualunque sia la versione di Excel che ha prodotto il file, (come documentato) XLRD rendimenti Unicode stringhe. I suoi problemi sono molto più propensi a essere correlati a come si sta visualizzando o la conversione di queste stringhe Unicode.
Per ulteriore assistenza, modificare la tua domanda per mostrare esempi di uscita effettiva insieme alla "esatta formulazione".
C'è un modulo csv nella libreria standard, che gestisce Unicode in Python 3.1.
Attenzione:. in Python 2.x biblioteca csv non Maniglia unicode
C'è una domanda simile. La risposta è stata l'uscita stava causando problema, non XLRD.
risposta su come impostare lo script a UTF-8 -> https://stackoverflow.com/a/17628350/713