7
votes

Ouvrez un fichier dans le codage approprié automatiquement

Je traite de problèmes dans quelques fichiers sur le codage. Nous recevons des fichiers d'une autre société et devons les lire (les fichiers sont au format CSV)

étrangement, les fichiers semblent être codés dans UTF-16. Je réussis à faire cela, mais je dois les ouvrir à l'aide du module codecs et spécifiant le codage, de cette façon. xxx

mais, juste Comme je suis capable d'obtenir le dialecte de manière plus agnostique, je pense que ce sera génial d'avoir un moyen d'ouvrir automatiquement les fichiers avec son codage approprié, au moins tous les fichiers texte. Il existe d'autres programmes, comme Vim qui atteint cela.

Quelqu'un sait une façon de le faire dans Python 2.6? PD: J'espère que cela sera résolu à Python 3, comme Toutes les chaînes sont unicode ...


1 commentaires

Python 3 ne résout pas cela; Tout ce qu'il fait, c'est ajouter codage et erreurs arguments sur ouvert () .


4 Réponses :


12
votes

Chardet peut vous aider.

CoDage de caractères de détection automatique dans Python 2 et 3. Aussi intelligent que votre navigateur. Open Source.


0 commentaires

-3
votes

Si cela sera fixé dans Python 3, il devrait également être corrigé en utilisant

from __future__ import unicode_literals


1 commentaires

Apparemment, cela signifie seulement que vos chaînes sont unicode, non pas que vous pouvez télécharger unicode directement à partir d'un fichier ... aussi c'est utf-8



5
votes

Ce ne sera pas "corrigé" dans Python 3, car ce n'est pas un problème fixable. De nombreux documents sont valables dans plusieurs codages, le seul moyen de déterminer le codage approprié consiste à connaître quelque chose sur le document. Heureusement, dans la plupart des cas, nous connaissons quelque chose sur le document, comme par exemple, la plupart des personnages seront regroupés en blocs Unicode distincts. Un document en anglais contiendra principalement des caractères dans les 128 premiers points de code. Un document en russe contiendra principalement des points de codes cyrilliques. La plupart des documents contiendront des espaces et des nouvelles lignes. Ces indices peuvent être utilisés pour vous aider à faire des suppositions éduquées sur les codages utilisés. Mieux encore, utilisez une bibliothèque écrite par quelqu'un qui a déjà fait le travail. (Comme Chardet , mentionné dans une autre réponse de Desintège .


0 commentaires

0
votes

CSV.Reader ne peut pas gérer les chaînes UNICODE dans 2.x. Voir le bas de la Documentation CSV et Cette question pour les moyens de le gérer.


0 commentaires