[英]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.