Comment convertir \xXY des caractères encodés en UTF-8 en Python?
J'ai un texte qui contient des caractères tels que "\xaf", "\xbe", qui, comme je le comprends de cette question, sont les caractères codés en ASCII.
Je veux les convertir en Python à leur UTF-8 équivalents. L'habitude string.encode("utf-8")
jette UnicodeDecodeError
. Est-il une meilleure façon de faire, par exemple, avec la codecs
de la bibliothèque standard?
Échantillon 200 caractères.
Votre échantillon ne comprend pas tout
Votre échantillon de données est UTF-8 valide. Avec le "séparateur d'enregistrement" et "unité de séparateur de caractères de contrôle.
Selon
\xaf
ou similaires. Vous disposez de tous les échantillons avec de tels personnages?Votre échantillon de données est UTF-8 valide. Avec le "séparateur d'enregistrement" et "unité de séparateur de caractères de contrôle.
Selon
enca
(linux.die.net/man/1/enca), il est l'UTF-8 "entouré par/mélangés avec les données de texte".OriginalL'auteur Jindřich Mynarz | 2011-01-19
Vous devez vous connecter pour publier un commentaire.
Votre fichier est déjà codé en UTF-8 fichier.
Et remplissant manuellement les noms inconnus:
char U000a saut de LIGNE
char U001e INFORMATIONS SÉPARATEUR de DEUX
char U001f INFORMATIONS SÉPARATEUR d'UN
try
ing"string".decode()
pour la plupart des encodages et, si tout a échoué, devinant l'encodage avec lechardet
de la bibliothèque.OriginalL'auteur tzot
.encode
est pour la conversion d'une chaîne Unicode (unicode
en 2.x,str
en 3.x) à une chaîne d'octets (str
en 2.x,bytes
en 3.x).En 2.x, c'est légal de faire appel
.encode
sur unstr
objet. Python implicitement décode la chaîne de caractères au format Unicode première:s.encode(e)
fonctionne comme si vous aviez écrits.decode(sys.getdefaultencoding()).encode(e)
.Le problème est que l'encodage par défaut est "ascii", et votre chaîne contient des caractères non-ASCII. Vous pouvez résoudre ce problème en spécifiant explicitement l'encodage correct.
enca
). Si cette procédure ne peut être appliquée pour l'ensemble du texte.Si l' \xXY personnages sont en ISO-8859-1?
OriginalL'auteur dan04
Ce n'est pas le code ASCII (ASCII codes seulement aller jusqu'à 127;
\xaf
est de 175). Vous devez d'abord trouver le bon codage, de décodage, et puis de le ré-encoder en UTF-8.Pourriez-vous fournir une chaîne réelle de l'échantillon? Ensuite, nous pouvons deviner le codage en cours.
Cet échantillon ne ressemble pas à un texte codé pour moi, plus comme un format propriétaire.
Il doit être dans le format MARC (loc.gov/marc). Quand j'ai essayé de détecter l'encodage avec
enca
j'ai eu la réponse en disant que c'est surtout l'UTF-8, entrecoupées de non-caractères de texte.Donc, il n'est certainement pas un format texte/encodage. Ce n'est pas un problème, vous pouvez résoudre avec un encodage correct; vous avez besoin d'une bibliothèque qui peut lire cette "base de données". Quelque chose comme ceci peut-être.
Oui, je suis déjà à l'aide de la
pymarc
bibliothèque pour analyser le fichier. Le problème est qu'il ne peut pas analyser correctement en raison de ces caractères (\xaf...). Donc, je suis en train de réparer le fichier avant de le transmettre à l'analyseur.OriginalL'auteur Tim Pietzcker