Python 错误“ascii”编解码器无法解码位置 11 中的字节 0x90:序号不在范围内(128)”

Jac*_*ack 3 python csv

我在学校做计算,但他们的python版本与我在家里的版本不同,每次我尝试在家里的电脑上运行我在学校做的文件时,它都会说“

UnicodeDecodeError: 'ascii' 编解码器无法解码位置 11 中的字节 0x90:序号不在范围内 (128)"

任何帮助表示赞赏

到目前为止,这是我的代码。

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)
        )
Run Code Online (Sandbox Code Playgroud)

Der*_*nes 9

0x90确实超出了 ASCII 的范围,它只涵盖0x000x7f. 该文件可能采用某种 Unicode 编码,也可能采用 ISO-8859 系列中的某种 8 位编码。一旦你发现了这一点,用codecs模块打开你的文件。假设您的编码是 ISO-8859-1:

with codecs.open('class1.csv', encoding='iso-8859-1') as handle:
    reader = csv.reader(handle)
Run Code Online (Sandbox Code Playgroud)

  • 8859-1 的选择通常是一个很好的猜测,但如果它是错误的,您将不会得到任何警告,只会得到不正确的数据。比胡乱猜测更好的是让 OP 实际找出正确的编码,也许在一个单独的问题中,也许有更多信息,如 [`character-encoding` 标签维基](http://stackoverflow.com/tags /字符编码/信息)。 (2认同)