Tukaj je moja koda,
for line in open('u.item'):
#read each line
vsakič, ko zaženem to kodo, se pojavi naslednja napaka:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
Poskušal sem to rešiti in dodati dodaten parameter v open(), koda je videti takole;
for line in open('u.item', encoding='utf-8'):
#read each line
Vendar se spet pojavi ista napaka. Kaj naj potem storim! Prosim za pomoč.
Kot je predlagal Mark Ransom, sem našel pravo kodiranje za to težavo. Kodiranje je bilo "ISO-8859-1", zato bo zamenjava open("u.item", encoding="utf-8")
z open('u.item', encoding = "ISO-8859-1")
rešila problem.
Vaša datoteka dejansko ne vsebuje podatkov v kodiranju utf-8, temveč neko drugo kodiranje. Ugotovite, katero je to kodiranje, in ga uporabite v klicu open
.
V kodiranju Windows-1252 bi bil na primer 0xe9
znak é
.
Če jih kdo išče, je to primer za pretvorbo datoteke CSV v Pythonu 3:
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass