计算文件中数字的平均值

时间:2016-09-17 09:33:43

标签: python file numbers

我遇到计算文件中数字平均值的问题。 到目前为止,我已经创建了一个读入文件并计算行数的函数。 该文件由许多数字列组成,但第8列是我需要计算的数据。

def file_read():
     fname = input("Input filname: ")
     infile = open(fname,'r')
     txt = infile.readlines()
     print("opens",fname,"...")

num_lines = sum(1 for line in open(fname))

#The first line in the file is only text, so i subtract 1 
print("Number of days:",(num_lines-1))

数字也是小数,所以我使用float。

这是我尝试计算数字之和, 它应该除以行数,但我得到一个错误,因为第一行是文本。

with open(fname) as txt:
         return sum(float(x)
               for line in txt
               for x in line.split()[8]

有没有办法让python忽略第一行,只关注下面的数字?

2 个答案:

答案 0 :(得分:0)

您可以使用txt.readline()来读取第一行,但要坚持使用迭代器的方法,只需使用next

文件上的迭代删除第一行
with open(fname) as txt:
   next(txt)  # it returns the first line, we just ignore the return value
   # your iterator is now on the second line, where the numbers are
   for line in txt:
       ...

旁注:这对于跳过使用csv模块打开的文件的标题行非常有用,next优于readline,因为csv标题可以在多行上

答案 1 :(得分:0)

试试这个

import re
#regular expression for decimals
digits_reg = re.compile(r"\d+\.\d+|\d+")

with open('''file name''', "r") as file:
    allNum = []
    #find numbers in each line and add them to the list
    for line in file:
        allNum.extend(digits_reg.findall(line))

#should be a list that contains all numbers in the file
print(alNum)