En utilisant xlrd pour lire le fichier Excel xls contenant des caractères chinois et / ou en hindi

StackOverflow https://stackoverflow.com/questions/3511743

  •  29-09-2019
  •  | 
  •  

Question

http: // scienceoss. com / lecture Excel-fichiers-de-python / commentaire-page-1 / # commentaire-1051

À 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'

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top