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
答案 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")