Voici mon code,
for line in open('u.item'):
#read each line
chaque fois que je lance ce code, il donne l'erreur suivante:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
J'ai essayé de résoudre ce problème et d'ajouter un paramètre supplémentaire dans open (), le code ressemble à;
for line in open('u.item', encoding='utf-8'):
#read each line
Mais encore une fois, cela donne la même erreur. que dois-je faire alors! S'il vous plaît aider.
Comme suggéré par Mark Ransom, j'ai trouvé le bon encodage pour ce problème. Le codage étant "ISO-8859-1", le remplacement de open("u.item", encoding="utf-8")
par open('u.item', encoding = "ISO-8859-1")
résoudra le problème.
Votre fichier ne contient pas réellement de données encodées en utf-8, il contient un autre encodage. Déterminez ce qu'est cet encodage et utilisez-le dans l'appel open
.
Dans l'encodage Windows-1252, par exemple, 0xe9
serait le caractère é
.
Également travaillé pour moi, ISO 8859-1 va économiser beaucoup, hahaha, surtout si vous utilisez les API de reconnaissance vocale
Exemple:
file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");
Essayez ceci pour lire en utilisant des pandas
pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')
Si vous utilisez Python 2
, voici la solution:
import io
for line in io.open("u.item", encoding="ISO-8859-1"):
# do something
Étant donné que le paramètre encoding
ne fonctionne pas avec open()
, vous obtiendrez l'erreur suivante:
TypeError: 'encoding' est un argument de mot clé invalide pour cette fonction
Si quelqu'un cherche ces informations, voici un exemple de conversion d'un fichier CSV en Python 3:
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass
Vous pouvez résoudre le problème avec:
for line in open(your_file_path, 'rb'):
'rb' lit le fichier en mode binaire. Lire la suite ici . J'espère que cela aidera!
Parfois lorsque open(filepath)
dans lequel filepath
n'est en réalité pas un fichier, la même erreur se produit, assurez-vous tout d'abord que le fichier que vous essayez d'ouvrir existe:
import os
assert os.path.isfile(filepath)
espérons que cela aidera.