web-dev-qa-db-fra.com

Python pour convertir de UTF-8 en ASCII

J'essaie d'écrire un script en python pour convertir les fichiers utf-8 en fichiers ASCII:

#!/usr/bin/env python
# *-* coding: iso-8859-1 *-*

import sys
import os

filePath = "test.lrc"
fichier = open(filePath, "rb")
contentOfFile = fichier.read()
fichier.close()

fichierTemp = open("tempASCII", "w")
fichierTemp.write(contentOfFile.encode("ASCII", 'ignore'))
fichierTemp.close()

Lorsque j'exécute ce script, j'ai l'erreur suivante:

UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xef en position 13: l'ordinal n'est pas dans la plage (128)

Je pensais que cela pouvait ignorer l'erreur avec le paramètre ignore dans la méthode d'encodage. Mais ça ne semble pas.

Je suis ouvert à d'autres façons de convertir.

30
Nicolas
data="UTF-8 DATA"
udata=data.decode("utf-8")
asciidata=udata.encode("ascii","ignore")
51
Utku Zihnioglu

UTF-8 est un sur-ensemble d'ASCII. Soit votre fichier UTF-8 est ASCII, soit il ne peut pas être converti sans perte.

8
Tobu
import codecs

 ...

fichier = codecs.open(filePath, "r", encoding="utf-8")

 ...

fichierTemp = codecs.open("tempASCII", "w", encoding="ascii", errors="ignore")
fichierTemp.write(contentOfFile)

 ...
7