使用文件名mbox-short.txt作为文件名
fname = input("Enter file name: ")
fh = open(fname)
count = 0.0
average = 0.0
for line in fh:
if not line.startswith("X-DSPAM-Confidence:") : continue
fline = float(line.split("X-DSPAM-Confidence:")[1])
average = fline
print("Average spam confidence:", average)
现在,它并没有给我平均值。
它的帖子是这样的。
平均垃圾邮件置信度:0.8475←不匹配垃圾邮件平均置信度:0.6178垃圾邮件平均置信度:0.6961000000000001垃圾邮件平均置信度:0.7565平均垃圾邮件置信度:0.7625999999999999垃圾邮件平均置信度:0.7556垃圾邮件平均置信度:0.7002垃圾邮件平均置信度:0.7615垃圾邮件平均置信度:0.7601垃圾邮件平均置信度:0.7605垃圾邮件平均置信度:0.6959垃圾邮件平均置信度:0.7606000000000001垃圾邮件平均置信度:0.7559垃圾邮件平均置信度:0.7605垃圾邮件平均置信度:0.6932垃圾邮件平均置信度:0.7558垃圾邮件平均置信度:0.6526垃圾邮件平均置信度:0.6948垃圾邮件平均置信度:0.6528垃圾邮件平均置信度:0.7002垃圾邮件平均置信度:0.7554垃圾邮件平均置信度:0.6956垃圾邮件平均置信度:0.6959垃圾邮件平均置信度:0.7556垃圾邮件平均置信度:0.9846垃圾邮件平均置信度:0.8509平均垃圾邮件置信度:0.9907
你好,我想你只需要在将行转换为float之前将其拆分:
fname = "highscore.txt"
fh = open(fname)
for line in fh:
if not line.startswith("X-DSPAM-Confidence:") : continue
print(line)
fline = float(line.split("X-DSPAM-Confidence:")[1])
print("Done")
以非数字字符串开头的行肯定不会愉快地成为float
相反,你可以.split()
行
例如,如果您的线路是X-DSPAM-Confidence: 1.0
你可以在:
上拆分
>>> "X-DSPAM-Confidence: 1.0".split(": ")
['X-DSPAM-Confidence', '1.0']
>>> float("X-DSPAM-Confidence: 1.0".split(": ")[1])
1.0