在Python3中分析文件中的数据并将其输出到字典中

在Python3中分析文件中的数据并将其输出到字典中,python,python-3.x,Python,Python 3.x,我正在编写一个名为average\u by\u section:(file,str)->float的函数 第一个参数是打开的标记文件。每一行代表一个学生,由一个学生编号、一个姓名、一个学区代码和一个年级组成,全部用空格分隔 例如,它是这样的: 987654322 Xu Carolyn L0101 19.5 233432555 Jones Billy Andrew L5101 16.0 555432345 P

我正在编写一个名为
average\u by\u section:(file,str)->float的函数

第一个参数是打开的标记文件。每一行代表一个学生,由一个学生编号、一个姓名、一个学区代码和一个年级组成,全部用空格分隔

例如,它是这样的:

987654322    Xu             Carolyn         L0101   19.5
233432555    Jones          Billy Andrew    L5101   16.0
555432345    Patel          Amrit           L0101   13.5
返回该部分中所有学生的平均分数,如果该部分代码没有出现在任何学生的分数文件中,则返回
None

我得到的提示是:

  • 提示:请注意,每个学生的姓名数量各不相同
  • 提示:使用
    rstrip()
  • 提示:要测试此函数,请编写一个helper函数,用于打开和关闭标记文件,并在其间调用
    average\u by_部分
我现在开始在文件的行中显示元素:

def average_by_section(marks, section):
    dic = {}
    for line in marks:
        wordlist = line.split()
我不知道下一步该怎么办

我需要一些指导/指南来完成这个功能

如何编写此函数?

请在下一行中尝试此函数:

(studentNumber, *names, sectionCode, grade) = wordlist
这是一个很好的Python3新特性,在该赋值中有
*
:)

关于文件的打开/关闭:您使用的是一种高级语言,大大简化了这一部分:

with open('/path/to/marks/file.txt') as marks:
    print average_by_section(marks, section)

就这样。带有
为您完成所有的开头和结尾。

每个学生的姓名数量各不相同,但一旦您拆分行,您可以看到列表的第一个元素始终是卷号,最后两个元素始终是部门代码和年级。组合列表中的其余元素。谢谢你的回答,它帮助了我!