如何从文本文件python

时间:2015-10-31 14:17:39

标签: python

在文本文件中,有一个名称旁边的数字列表,表示在这种情况下的得分。有没有办法弄清楚文本文件中所有数字的平均值。

代码:

print("average calculator")
option = input("option: ")
option_class = input("class: ")
one = "1.txt"
if option.lower() == 'avg' and option_class == '1':
    name = input("name: ")

    with open(one) as f:
        the_list = [int(l.strip().split()[-1]) for l in f if name in l]

        b = sum(the_list)
        length = len(the_list)
        avg = float(b) / length if length else 0
        print (name,"Average is: ", avg)

代码向用户询问其名称的部分,此处它会查找文本文件中名称旁边的所有数字,但是我尝试删除此方面并允许代码识别所有数字文件...

文字档案:

Matt 3
Jhon 4
Alex 6

根据这些数字,[3,4,6]应该算出平均值,NB:可以附加文本文件,可以添加更多名称和分数。

TIA!

2 个答案:

答案 0 :(得分:0)

尝试pandas库。

某些内容:

import pandas as pd
df = pd.read_csv('filename.txt', delimiter=' ')
df['Column name'].mean()

它具有轻松过滤和分组数据的功能,对于此类任务比编写自己的代码更有用。我使用文件100,000行+,可以读取,分组,过滤每组中的异常值,并在大约4行代码中计算统计数据。

http://pandas.pydata.org/

答案 1 :(得分:0)

列表理解:

the_list = [int(l.strip().split()[-1]) for l in f if name in l]

等效:

with open(one) as f:
    the_list = []   # creating empty list or (array)
    for l in f:     # treversing over the lines in file
        if name in l:  # if input name is in the line do next line
            the_list.append(int(l.strip().split()[-1])) # adding element to list
        else:   # if input name is not in line ignore the line dont use the score
            pass