编写一个提示输入文件名的程序,然后打开该文件并读取文件,查找表单行: X-DSPAM-置信度:0.8475 对这些线进行计数并从每条线中提取浮点值,并计算这些值的平均值并生成输出
这是我的python代码
# Use the file name mbox-short.txt as the file name
fname = raw_input("Enter file name: ")
fh = open(fname)
inp = fh.read()
count = 0
total = 0
for line in inp:
if not line.strip().startswith("X-DSPAM-Confidence:") : continue
pos = line.find(':')
num = float(line[pos+1:])
total = float(total + num)
count = float(count + 1)
print 'Average spam confidence:', float(total/count)
我真的不知道发生了什么事,因为我在第13行(代码的最后一行)不断出现零分割错误
答案 0 :(得分:1)
找不到字符串X-DSPAM-Confidence:
会发生什么?
如果你的代码没有找到那个字符串,那么Count var总是为零,所以这是一种你会得到零除错误的情况。
在最后计算之前尝试检查Count的值...
也许:
If Count>0 print 'Average spam confidence:', float(total/count)
(这可能不是正确的python语法,因为我从未使用过python)
答案 1 :(得分:1)
您的if
语句正在跳过for循环的其余部分,因为line.strip.startwith("X-DSPAM-Confidence:")
总是计算为false。
然后,count
永远不会递增,因此整个时间保持为0,导致你的除法为零错误。
答案 2 :(得分:0)
我认为它没有正确读取文件所以它不会进入for循环
fh = open(fname)
inp = fh.read()
试试这个并检查它是否进入了
fname = raw_input("Enter file name: ")
fh = open(fname)
inp = fh.read()
count = 0
total = 0
for line in inp:
print inp