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

如何修改Python代码删除含同一非连续字符超3次的CSV行

解决方法:过滤掉任一字符出现次数超3次的行

嘿,你的需求很明确——原来的代码只处理连续3个相同字符的情况,现在要改成不管字符是不是连续,只要它在一行里出现超过3次就删掉整行对吧?

核心思路调整:

原来的bad_words列表思路只适用于连续重复的场景,现在我们需要统计每行里每个字符的总出现次数,只要有字符的计数>3,就把这行过滤掉。Python的collections.Counter刚好能帮我们快速完成字符计数的工作。

修改后的完整代码:

from collections import Counter

with open('7.csv') as oldfile, open('new7.csv', 'w') as newfile:
    for line in oldfile:
        # 先去掉行首尾的换行/空白,避免把换行符也算进统计里
        cleaned_line = line.strip()
        # 统计每个字符的出现次数
        char_counts = Counter(cleaned_line)
        # 检查是否存在字符出现超过3次的情况
        if not any(count > 3 for count in char_counts.values()):
            newfile.write(line)

代码拆解说明:

  1. Counter(cleaned_line):比如传入BAABAAG,会返回一个字典样的对象{'A':4, 'B':2, 'G':1},清晰展示每个字符的出现次数。
  2. any(count >3 ...):遍历所有字符的计数,只要有一个超过3,这个表达式就返回True。我们用not来取反——只有当所有字符的计数都≤3时,才把该行写入新文件。
  3. 保留原行格式:虽然我们用strip()清理了行来统计,但写入新文件时还是用原始的line,这样不会破坏原文件的换行和格式。

测试你的示例行:

拿你给的例子来看:

  • BAABAAG里A出现4次 → 会被过滤掉
  • 如果有一行是BAABAC,A出现3次、B2次、C1次 → 会被保留下来

这样就完美实现你要的需求啦!

内容的提问来源于stack exchange,提问作者aaddkah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:03:14