我遇到计算文件中数字平均值的问题。 到目前为止,我已经创建了一个读入文件并计算行数的函数。 该文件由许多数字列组成,但第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忽略第一行,只关注下面的数字?
答案 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)