对于我的任务,我收到了一个名为' measles.txt'的文本文件。其中包含大量信息,但最重要的是,我专注于每一行的年份。我的任务是制作一个程序,读取' measles.txt',提示用户输入年份,并将该年份的每一行输出到另一个文本文件中。
我无法弄清楚的问题是,我的教授指出,如果用户输入不完整的年份,它必须工作。例如,其年份字段包含“1987”的行将由以下任何用户响应选择:{“1”,“19”,“198”,“1987”}
此外,如果用户输入""," all"或" ALL",则必须输出文本文件中的所有行。
这里有measles.txt:https://bpaste.net/show/ade0a362b882
我目前的代码是:
input_file = open('measles.txt', 'r')
output_file_name = input("Please enter the name of the output file: ")
output_file = open(output_file_name, 'w')
for line in input_file:
output_file.write(line)
output_file.close()
input_file.close()
答案 0 :(得分:0)
这样的事可能有用。您可以检查一年是否以某个字符串开头(例如'1'
或'200'
),下面的代码应返回所有匹配的行。
编辑:
您似乎发现此代码过于复杂,但在复制/粘贴时出错,并破坏了您的解决方案。我修改了你的代码以进一步简化并修复它。
input_file = open('measles.txt', 'r')
year = input("Please enter a year: ")
output_file_name = input("Please enter the name of the output file: ")
output_file = open(output_file_name, 'w')
for line in input_file:
if year in ("", "all", "ALL") or line.split()[-1].startswith(year):
output_file.write(line)
output_file.close()
input_file.close()
答案 1 :(得分:0)
我找到了一个更简单的答案。由于measles.txt中的年份数字从头开始是88个字符,因此我使用它来创建if / elif语句。
input_file = open('measles.txt', 'r')
year = input("Please enter a year: ")
output_file_name = input("Please enter the name of the output file: ")
output_file = open(output_file_name, 'w')
# For loop that checks the end of the file for the year number
for line in input_file:
if year == line[88:88+len(year)]:
output_file.write(line)
elif year == ("", "all", "ALL"):
output_file.write(line)
output_file.close()
input_file.close()