Python UnicodeDecodeError异常

时间:2016-01-19 22:07:04

标签: python unicode decode python-unicode

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)

我做错了什么?

感谢您这么多,是的,我有蟒蛇3.换作你伤心导入的编解码器,我现在得到另一个错误insteed。

ValueError: max() arg is an empty sequence

我做什么sholud?有什么建议?

2 个答案:

答案 0 :(得分:0)

据我所知,你必须输入英文字母才能让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不会字符串。

答案 1 :(得分:0)

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

因此,您需要使用UTF-8编码打开它:

import codecs

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

这一切都假设你使用的是Python 3,其中的字符串是Unicode 默认。既然你对非ASCII标识符没有任何问题,那就好了 像一个安全的假设。