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

2024-04-25 06:57:58 发布

您现在位置: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")

基本上,我的代码在这里导入一个学生文件并格式化布局,这样他们在name,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

Tags: ofnameinrestformatforinputv3
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)]
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")

相关问题 更多 >