开发measles.txt年份筛选程序:支持不完整年份匹配的问题
解决不完整年份匹配的方案
嘿,这个不完整年份匹配的问题其实很好搞定!核心思路就是把年份当成字符串来处理,用子串包含的方式判断匹配,而不是局限于数字的完全相等。下面我给你一步步拆解实现方法,用Python为例:
核心思路
不管用户输入的是"19"、"87"还是"98",我们只需要检查每行里的Year字段对应的字符串是否包含用户输入的内容——这样不管是前两位、后两位还是中间的片段,都能精准匹配到。
完整代码示例
假设你的measles.txt是CSV格式(每行用逗号分隔字段,Year是其中一个字段),代码可以这么写:
# 获取用户输入的年份(支持不完整) user_year = input("请输入年份(支持不完整年份,比如19、87):").strip() # 处理空输入的情况 if not user_year: print("请输入有效的年份内容哦!") exit() # 读取源文件并写入匹配结果 with open('measles.txt', 'r', encoding='utf-8') as in_file, open('filtered_results.txt', 'w', encoding='utf-8') as out_file: # 先写入表头(如果你的文件有表头的话) header = in_file.readline() out_file.write(header) # 遍历每一行数据 for line in in_file: # 按逗号分割字段,这里假设Year是第2个字段(索引为1),你可以根据实际格式调整 line_parts = line.strip().split(',') # 确保行格式正确,避免索引错误 if len(line_parts) >= 2: # 把Year字段转成字符串(如果原本是数字的话) year_field = line_parts[1].strip() # 判断用户输入的年份是否是Year字段的子串 if user_year in year_field: out_file.write(line + '\n') print("筛选完成!结果已保存到filtered_results.txt")
关键细节说明
- 字符串匹配:用
user_year in year_field这个操作,直接判断用户输入的内容是否是Year字段字符串的一部分,完美支持任意长度的不完整年份输入。 - 格式适配:如果你的
measles.txt不是CSV格式(比如用空格、制表符分隔),只需要把split(',')改成对应的分隔符即可,比如split('\t')(制表符)或者split()(任意空格)。 - 编码问题:加上
encoding='utf-8'可以避免中文或特殊字符的乱码问题,根据你的实际文件编码调整就行。
这样修改后,用户输入"19"就能匹配所有19xx年的行,输入"87"就能匹配所有xx87年的行,完全满足你的需求啦!
内容的提问来源于stack exchange,提问作者grillem
相关产品推荐
相关产品推荐

