如何计算线条以及如何从线条中提取数字,然后计算数字的平均值



使用文件名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

最新更新