En utilisant xlrd pour lire le fichier Excel xls contenant des caractères chinois et / ou en hindi
Question
À partir du lien ci-dessus, j'ai utilisé cet utilitaire pour lire un fichier XLS. Si le fichier XLS contient différents caractères de langues comme le chinois ou l'hindi, il ne leur sortie correctement. Y at-il une solution de contournement pour cela?
Après recherche sur Google, je trouve ceci:
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
Mais il y a une erreur dans la ligne book = open_workbook('dodgy.xls',encoding='cp1252')
:
TypeError: open_workbook() got an unexpected keyword argument 'encoding'
La solution
Selon le xlrd , le paramètre correct est: encoding_override = "CP1252" et non encoding = "CP1252" .
De la façon dont vous importez le module xlrd vous devez appeler la fonction comme xlrd.open_workbook mais dans l'exemple de code que vous utilisez la fonction directement, comme si vous aviez utilisé « de l'importation xlrd * ».
Autres conseils
[dis] claimer. Je suis l'auteur de xlrd
Si la xls contient différents caractères de la langue comme chiné ou hindi.It ne délivre pas les wordings.Is exactement là un travail autour de ce ..
L'argument encoding_override est (comme expliqué dans la documentation) UNIQUEMENT pour les anciens fichiers (produits par Excelle antérieures à Excel 97 (qui est l'année 1997)) et alors seulement lorsque l'interne enregistré « codepage » est manquant ou incorrect.
Remarque: L'ancien fichier avec des caractères chinois. Redéfinition avec « CP1252 » est garanti à lever une exception
Note: L'ancien fichier avec des caractères « Hindi » (devanagari?): Très peu probable ... autant que je ne sais jamais il y avait un codepage soutenu officiellement pour l'un des scripts ISCII, et je ne l'ai pas entendu parler de non officiel. Toute information sur ce sujet et / ou les fichiers d'exemple, serait la bienvenue.
Excel 97 et versions ultérieures enregistrer toutes les données de texte (efficace) UTF-16LE. Le encoding_override est ignoré si le fichier est un fichier Excel-97 ou plus tard valide.
Quelle que soit la version d'Excel qui a produit le fichier (comme documenté) xlrd retours UNICODE chaînes. Vos problèmes sont beaucoup plus susceptibles d'être liés à la façon dont vous affichez ou convertir ces chaînes unicode.
Pour plus d'aide, modifier votre question pour montrer des exemples de la production réelle ainsi que le « libellé exact ».
Il y a un module csv dans la bibliothèque standard, qui gère unicode en Python 3.1.
Avertissement:. en Python 2.x la bibliothèque csv fait pas poignée unicode
Il y a une question similaire. La réponse a été la production a été à l'origine problème, pas XLRD.
Réponse sur la façon dont configurer votre script pour UTF-8 -> https://stackoverflow.com/a/17628350/713