Python错误';ascii';编解码器可以';t解码第11位的字节0x90:序号不在范围(128)内;
我在学校做计算,但他们的python版本与我在家里的版本不同,每次我试图在家里的电脑上运行我在学校做的文件时,它都会显示“我的电脑” UnicodeDecodeError:“ascii”编解码器无法解码位置中的字节0x90 11:序号不在范围内(128)” 谢谢你的帮助 这是到目前为止我的代码。Python错误';ascii';编解码器可以';t解码第11位的字节0x90:序号不在范围(128)内;,python,csv,Python,Csv,我在学校做计算,但他们的python版本与我在家里的版本不同,每次我试图在家里的电脑上运行我在学校做的文件时,它都会显示“我的电脑” UnicodeDecodeError:“ascii”编解码器无法解码位置中的字节0x90 11:序号不在范围内(128)” 谢谢你的帮助 这是到目前为止我的代码。 classc = int(input("WHich classes scores do you want to see 1 or 2 or 3")) if classc ==1: import
classc = int(input("WHich classes scores do you want to see 1 or 2 or 3"))
if classc ==1:
import csv
print("H")
with open("class1.csv","r") as csv1file:
csvfile1reader = csv.reader(csv1file)
csv1 = []
for row in csvfile1reader:
if len (row) != 0:
csv1 = csv1 + [row]
print("Here are the scores for class1 in aphabetical order!")
import operator
hl = open ("class1.csv","r")
csvo = csv.reader(hl,delimiter='0')
sort1 = sorted(csv1,key=operator.itemgetter(0))
for row in sort1:
print (row)
print("these are the highest to lowest score")
h2 = open ("class1.csv","r")
csvo = csv.reader(hl,delimiter=' ')
sort2 = sorted(csv1,key=operator.itemgetter(1))
for row in sort2:
print (row)
import csv
with open('class1.csv') as handle:
reader = csv.reader(handle)
next(reader, None)
for row in reader:
user, *scores = row
average = sum([int(score) for score in scores]) / len(scores)
print (
"{user} has average of {average}".format(user=user, average=average)
)
0x90
确实超出了ASCII的范围,它只包括0x00
到0x7f
。在ISO-8859系列中,该文件可能采用某种Unicode编码,也可能采用某种8位编码。一旦您发现了这一点,请使用编解码器
模块打开您的文件。假设您的编码是ISO-8859-1:
with codecs.open('class1.csv', encoding='iso-8859-1') as handle:
reader = csv.reader(handle)
请您发布完整的错误消息,包括行号?…和Python版本,因为这可能会影响如何正确处理unicode。选择8859-1通常是一个很好的猜测,但如果它是错误的,您不会得到任何警告,只是不正确的数据。比胡乱猜测更好的是,OP可以在单独的问题中实际找出正确的编码,可能有更多的信息,如本文中所解释的。