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 标识符没有问题,这似乎
就像一个安全的假设。
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 标识符没有问题,这似乎 就像一个安全的假设。