Python UnicodeDecodeError 异常

Python UnicodeDecodeError exception

txt = input("vilken textfil vill du använda?")
fil = open(txt,"r")

spelare=[]
resultat=[]
bästnamn=None
bästkast=0

for line in fil:

kolumn=line.split()
kolumn1=len(kolumn[1])
kolumn2=len(kolumn[2])
if len(kolumn)<5:
    mu=float(kolumn[1])
    sigma=float(kolumn[2])
    #print(mu,sigma)
    #kast=random.normalvariate(mu,sigma)
    #print(kast)

    for r in range(0,6):
        kast=random.normalvariate(mu,sigma)
        resultat.append(kast)

if max(resultat)>bästkast:
   bästkast=max(resultat)
   bästnamn=kolumn[0]

print("Segrare", bästnamn, "som stötte", bästkast, "meter")

当我 运行 程序时出现此错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 85: ordinal not in range(128)

我做错了什么?

非常感谢,是的,我有 python 3. 由于您对导入编解码器感到遗憾而做出的更改,我现在又遇到了另一个错误。

ValueError: max() arg is an empty sequence

我该怎么办?有什么建议么?

据我所知,您必须输入英文字母才能python阅读。所以你需要改变这些变量:

bästnamn
bästkast

编辑: max() 是给出一个列表的最大值,在字符串的情况下,它将把它分解成字母并返回字母表中的最大字母,像这样:

myNumList = [1,2,4,5,8,50,10]`
print max(myNumList ) #result 50

myString = 'tree'
print max(myList) #result 't' 

myMixList = [1,2,4,'Apple','20']`
print max(myMixList) #result 'Apple' 

注意它不会在单个上工作integer你会得到错误,但你确实有传递列表给它。

你的代码很好,只是你要输入的文档,可能有一些初始化错误,我看到你的应用程序至少需要 4 列,但从不使用第 4 列,它的文件类型并不重要, 但我相信你的文件应该是这样的:

[String/number] [Number] [Number]

您的文档示例应如下所示:

String1 158 212
String2 584 795
1234567 845 356
String4 356 489
String5 876 215
String6 985 853
String7 111 809
String8 234 058 

注意: 如果第二列或第三列中有可能导致错误的字符串,则字符串无法转换为 float 以及 random.normalvariate 不会带字符串。

你正在阅读你的文件,就好像它是用 ASCII 编码的,但它是 不是。鉴于 0xc3 我会说它可能是用 UTF-8 编码的。

所以,你需要用UTF-8编码打开它:

import codecs

fil = codecs.open(txt, "r", "utf-8")

这一切都假设您使用的是 Python 3,其中字符串是 Unicode 默认。由于您对 non-ASCII 标识符没有问题,这似乎 就像一个安全的假设。