繁体   English   中英

Python - 在行之间拆分文件

[英]Python - split a file between lines

我的输入是

1b
Sierra Paul__________4.3 4.9 6.7
Deen Tatcher________5.8 6.9 8.0 
=
2b
Hannah Raman____________6.5 5.5 4.5
Anita Mcgee__________6.7 7.2 7.7 

output 应该是

Report for group 1b
Sierra Paul has a final grade of 6.0
Deen Tatcher has a final grade of 7.0 
End of report

Report for group 2b
Hannah Raman has a final grade of 6.0 
Anita Mcgee has a final grade of 7.0
End of report

如果输入只是带有成绩的名称,我可以使代码正常工作,但我不知道如何在“=”处拆分组。 我尝试了另一个定义,但它不起作用。 我想这是因为我在def print_group中使用的拆分方法只能在一行内拆分,而不是在行间拆分? 我该如何解决这个问题?

我的代码

import re

NUMBER_OF_GRADES = 3

def print_grade(input_grades):
    grades = input_grades.split()

    grade1 = float(grades[0])
    grade2 = float(grades[1])
    grade3 = float(grades[2])

    average_grade = (grade1 + grade2 + grade3) / NUMBER_OF_GRADES
    final_grade = round(average_grade * 2) / 2

    if final_grade == 5.5 :
        print "6.0"
    else:
        print "%.1f" %final_grade

def print_name_grade(student) :
    input_line = student.split('_+', student)

    full_name = input_line[0]
    final_grade = input_line[1]

    print "%s has an average grade of" %full_name,
    print_grade(final_grade)

def print_group(group) :
    input_groups = re.split('=', group)

    group_name = input_groups[0]
    student_list= input_groups[1]

    print "Report for group %s" %group_name

    for student in student_list:
        print_name_grade(student)

    print "End of report"

student_file = open('grades1.in.txt').readlines()

for group in student_file:
    print_group(group)

你的假设是正确的。 这部分代码:

for group in student_file:
    print_group(group)

导致调用print_group()并从student_file读取任何行。 所以调用看起来像:

print_group(1b)
print_group(Sierra Paul__________4.3 4.9 6.7)
print_group(Deen Tatcher________5.8 6.9 8.0)
print_group(=)
...

您实际上可以通过在print_group() function 的开头放置一个print(group)命令来发现:如果您执行以下操作,您的代码应该可以工作:

def print_group(group) :
    if group == "=":
        pass
    ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM