2017-10-21 89 views
1

Un fichier texte a contenu commeComment réparer un fichier texte avec des caractères u2014, u2017, etc en utilisant python?

"Longueur: Comme par client \ u2019s besoin | \ u2022 Matériel: CFC | \ u2022"

Je suis en train de convertir en caractères. Comment lire, convertir cela en caractères et le sauvegarder.

screenshot

+0

Ces codes '\ uXXXX' sont des littéraux d'échappement Python pour les caractères Unicode. D'où vient ce "fichier texte"? Il semble qu'il aurait pu être écrit en vidant les 'repr()' s de certains objets 'unicode' de Python sans vraiment les encoder correctement. – Iguananaut

+2

Est-ce que cela provenait de JSON ou d'une autre source? Cela compte; différentes sources encodent différemment les codes Unicode. Les points de code JSON '\ uhhh' sont en fait des valeurs UTF-16, ce qui signifie que les points non-BMP nécessitent ** deux ** séquences d'échappement. –

Répondre

1

En général, quelque chose le long des lignes de

uni_chr_re = re.compile(r'\\u([a-fA-F0-9]{4})') 

lines = [] 
with open(filename) as f: 
    for line in f: 
     lines.append(uni_chr_re.sub(lambda m: unichr(int(m.group(1), 16)), line)) 

C'est l'approche générale, mais les détails dépendent des détails tels que l'endroit où ce texte est venu, comme Martijn pointed out.