我正在尝试编写一个从 infile 读取每一行的 Python 程序。这个 infile 是一个日期列表。我想用函数 isValid() 测试每一行,如果日期有效则返回 true,否则返回 false。如果日期有效,则将其写入输出文件。如果不是,则将无效写入输出文件。我有这个功能,我只想知道用这个功能测试每一行的最佳方法。我知道这应该通过循环来完成,我只是不确定如何设置循环来逐一测试文件中的每一行。
编辑:我现在有一个基本上可以工作的程序。但是,我在输出文件中得到了不正确的输出。也许有人能够解释原因。
好的,我现在有一个基本上可以运行的程序,但是我在输出文件中得到了奇怪的结果。希望有 Python 3 经验的人可以提供帮助。
def main():
datefile = input("Enter filename: ")
t = open(datefile, "r")
c = t.readlines()
ofile = input("Enter filename: ")
o = open(ofile, "w")
for line in c:
b = line.split("/")
e = b[0]
f = b[1]
g = b[2]
text = str(e) + " " + str(f) + ", " + str(g)
text2 = "The date " + text + " is invalid"
if isValid(e,f,g) == True:
o.write(text)
else:
o.write(text2)
def isValid(m, d, y):
if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
if d is range(1, 31):
return True
elif m == 2:
if d is range(1,28):
return True
elif m == 4 or m == 6 or m == 9 or m == 11:
if d is range(1,30):
return True
else:
return False
这是我得到的输出。
1998年5月19日无效 1984年7月21日无效 12月7日 1862年无效 2000年13月4日无效 11月40日 1460年无效 1970年5月7日无效 2001年8月31日无效date 6 26, 1800 无效 date 3 32, 400 无效 date 1 1, 1111 无效