“For Line In …” resulteert in UnicodeDeCodeError: ‘UTF-8’ Codec kan Byte

Hier is mijn code,

for line in open('u.item'):
# Read each line

Wanneer ik deze code uitvoer, geeft het de volgende foutmelding:

UnicodedecodeError: ‘UTF-8’ Codec kan niet decoderen byte 0xe9 in positie 2892: ongeldige continuation byte

Ik heb geprobeerd dit op te lossen en een extra parameter toe te voegen (). De code ziet eruit als:

for line in open('u.item', encoding='utf-8'):
# Read each line

Maar nogmaals, het geeft dezelfde fout. Wat moet ik dan doen?


Antwoord 1, Autoriteit 100%

Zoals Aanbevolen door Mark Ransom vond ik de juiste codering voor dat probleem. De codering was "ISO-8859-1", dus het vervangen van open("u.item", encoding="utf-8")MET open('u.item', encoding = "ISO-8859-1")zal het probleem oplossen.


Antwoord 2, Autoriteit 12%

Het volgende werkte ook voor mij. ISO & NBSP; 8859-1 gaat veel opslaan, hahaha – voornamelijk als gebruik van spraakherkenning API’s.

Voorbeeld:

file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");

Antwoord 3, Autoriteit 7%

Uw bestand bevat niet daadwerkelijk UTF-8 gecodeerde gegevens; Het bevat een andere codering. Zoek uit wat dat codeert is en gebruik het in de openCALL.

In Windows-1252-codering, bijvoorbeeld de 0xe9zou het teken ézijn.


Antwoord 4, autoriteit 4%

Probeer dit te lezen met Panda’s:

pd.read_csv('u.item', sep='|', names=m_cols, encoding='latin-1')

Antwoord 5, autoriteit 3%

Dit werkt:

open('filename', encoding='latin-1')

Of:

open('filename', encoding="ISO-8859-1")

Antwoord 6, autoriteit 3%

Als je Python 2 gebruikt, is het volgende de oplossing:

import io
for line in io.open("u.item", encoding="ISO-8859-1"):
    # Do something

Omdat de parameter encodingniet werkt met open(), krijgt u de volgende foutmelding:

TypeError: ‘encoding’ is een ongeldig trefwoordargument voor deze functie


Antwoord 7, autoriteit 3%

U kunt het probleem oplossen met:

for line in open(your_file_path, 'rb'):

‘rb’ leest het bestand in binaire modus. Lees hier.


Antwoord 8

Je kunt het op deze manier proberen:

open('u.item', encoding='utf8', errors='ignore')

Antwoord 9

Dit is een voorbeeld voor het converteren van een CSV-bestand in Python 3:

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass

Antwoord 10

Soms bij gebruik van open(filepath)In welke filepathEigenlijk geen bestand is, krijgt u eerst de Bestand dat u probeert te openen bestaat:

import os
assert os.path.isfile(filepath)

Antwoord 11

Open uw bestand met notepad ++ , selecteer “Codering” of “Encodage “Menu om te identificeren of om te converteren van ANSI naar UTF-8 of de ISO & NBSP; 8859-1 codepagina.


Antwoord 12

, zodat de webpagina sneller wordt doorzocht voor de Google-aanvraag op een vergelijkbare vraag (over fout met UTF-8), laat ik mijn solvation hier voor anderen.

Ik had een probleem met. CSV-bestand openen met die beschrijving:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 150: invalid continuation byte

Ik heb het bestand geopend met Kladblok & amp; geteld 150e positie: dat was een cyrillisch symbool.
Ik herbergde dat bestand met ‘Opslaan als ..’ Opdracht met codering ‘UTF-8’ & AMP; Mijn programma begon te werken.

Other episodes