计算线并提取浮点值并计算值的平均值

时间:2016-03-16 19:08:16

标签: python

所以我需要编写一个提示输入文件名的程序,然后打开该文件并读取文件,查找表格的行:X-DSPAM-Confidence:0.8475 我无法获取提取值的总和并计算线条并打印以显示用户。

out_number = 'X-DSPAM-Confidence: 0.8475'
Num = 0.0
flag = 0
fileList = list()

fname = input('Enter the file name')
try:
    fhand = open(fname)
except:
    print('file cannot be opened:',fname)

for line in fhand:
    fileList = line.split()
    print(fileList)
    for line in fileList:

if flag == 0:
    pos = out_number.find(':')
    Num = out_number[pos + 2:]
    print (float(Num))

3 个答案:

答案 0 :(得分:0)

您的代码中有一个示例行,当您查看文件中的每一行时,您将计算示例行中的数字,而不是文件中的行。

所以,这就是我要做的事情:

import os
import sys

fname = input('Enter the file name: ')
if not os.path.isfile(fname):
    print('file cannot be opened:', fname)
    sys.exit(1)

prefix = 'X-DSPAM-Confidence: '
numbers = []
with open(fname) as infile:
    for line in infile:
        if not line.startswith(prefix): continue
        num = float(line.split(":",1)[1])
        print("found:", num)
        numbers.append(num)
    # now, `numbers` contains all the floating point numbers from the file
average = sum(numbers)/len(numbers)

但我们可以提高效率:

import os
import sys

fname = input('Enter the file name: ')
if not os.path.isfile(fname):
    print('file cannot be opened:', fname)
    sys.exit(1)

prefix = 'X-DSPAM-Confidence: '
tot = 0
count = 0

with open(fname) as infile:
    for line in infile:
        if not line.startswith(prefix): continue
        num = line.split(":",1)[1]
        tot += num
        count += 1
print("The average is:", tot/count)

答案 1 :(得分:0)

试试这个

import re
pattern = re.compile("X-DSPAM-Confidence:\s(\d+.\d+)")
sum = 0.0
count = 0
fPath = input("file path: ")
with open('fPath', 'r') as f:
    for line in f:
        match = pattern.match(line)
        if match is not None:
             lineValue = match.group(1)
             sum += float(lineValue)
             count += 1
print ("The average is:", sum /count)

答案 2 :(得分:0)

fname = input("Enter file name: ")
fh = open(fname)
count=0
x=0
for line in fh:
    if not line.startswith("X-DSPAM-Confidence:") : continue
    x=float(line.split(":")[1].rstrip())+x
    count=count+1
    
    
output=x/count
print("Average spam confidence:",output)