You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制文本文件中指定字符串的出现次数,实现同名记录最多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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:54:06