如何限制文本文件中指定字符串的出现次数,实现同名记录最多3条的控制逻辑
同姓名成绩记录最多存储3条的Python实现方案
你找到的参考代码存在逻辑缺陷,仅能判断姓名是否存在于文件中,无法统计实际出现次数,count最大值只能到1,无法满足最多3条记录的校验需求。
核心实现思路是逐行读取文件匹配目标姓名统计次数,若次数达到3次直接终止程序,避免新增重复记录。
完整实现代码
校验函数
# 检查指定姓名的记录数是否超过上限3 def check_name_count(target_name, file_path='testResultA1.txt'): count = 0 try: # 逐行读取文件统计匹配次数 with open(file_path, 'r', encoding='utf-8') as f: for line in f: # 可根据你的实际存储格式调整匹配逻辑 # 若为逗号分隔的结构化存储(姓名,分数),可替换为下方注释的代码避免误匹配 # if line.strip().split(',')[0] == target_name: if target_name in line.strip(): count += 1 except FileNotFoundError: # 兼容首次运行文件不存在的场景,直接返回不终止程序 return # 超过3次直接终止程序 if count >= 3: print(f"错误:姓名【{target_name}】已存在3条记录,无法继续新增") exit()
调用示例
在你原有写入记录的逻辑前,先调用校验函数即可:
# 示例:新增张三的89分记录 new_name = "张三" new_score = 89 # 先调用校验函数,不符合条件会直接终止程序 check_name_count(new_name) # 校验通过后执行原有写入逻辑 with open('testResultA1.txt', 'a', encoding='utf-8') as f: f.write(f"{new_name},{new_score}\n")
注意事项
- 如果你的文件是结构化存储,建议拆分字段后匹配姓名,避免分数等其他字段出现相同字符串导致统计错误
- 可根据自己的文件路径、存储格式调整函数参数和匹配规则
内容的提问来源于stack exchange,提问作者optiical
相关产品推荐
相关产品推荐

