使用用户输入打印特定年份的学生

时间:2014-12-09 09:32:21

标签: python

x = input("Enter a Filename: ")
try:
    o = open(x, "r")
    p = o.read()
    y = tuple(j.split() for j in p.splitlines())
    for v1,v2,v3,fname,*rest_of_name in y:
        print("{:<30} {:<10} {:<5} {:<5}".format(' '.join(rest_of_name) + ',' + fname, v1,v3, v2))
    b = int(input("Enter a year: "))
    if b == int(v2):
        print("{:<30} {:<10} {:<5} {:<5}".format(' '.join(rest_of_name) + ',' + fname, v1,v3, v2))

    o.close()
except IOError as e :
    print("File Does Not Exist")

基本上我的代码在这里导入学生文件并格式化布局,以便它们在名称,regnum,degreescheme,year列中整齐排列,如下所示

Simpson,Bart                   12345      G400  2    
Simpson,Lisa                   12346      GH46  1    
J Simpson,Homer                12347      G401  2    
Grainger,Hermione              12348      H610  4    
Potter,Harry                   12349      G400  3    
Shmoikel Krustofski,Herschel   12350      G402  1    

然而,现在我试图要求用户输入一年例如“2”,然后应该只打印:

Simpson,Bart                   12345      G400  2
J Simpson,Homer                12347      G401  2

2 个答案:

答案 0 :(得分:2)

import re
print re.findall(r"^.*[ ]"+str(x)+"[ ]*$,p)

你可以尝试一下。参见演示。

https://regex101.com/r/iY3eK8/7

或者

import re
print [k for k in p.splitlines() if re.split(r" {2,}",k)[3]==str(x)]

答案 1 :(得分:0)

x = input("Enter a Filename: ")
try:
    o = open(x, "r")
    p = o.read()
    y = tuple(j.split() for j in p.splitlines())
    for v1, v2, v3, fname, *rest_of_name in y:
            print ("{:<30} {:<10} {:<5} {:<5}.format(''.join(rest_of_name)) + ',' + fname, v1, v3, v2")
    year = input("Enter a year:")
    for v1, v2, v3, fname, *rest_of_name in y:
        if v2 == year:
            print ("{:<30} {:<10} {:<5} {:<5}.format(''.join(rest_of_name)) + ',' + fname, v1, v3, v2")
    o.close()
except IOError as e:
    print ("File Does Not Exist")