Python读取TXT文件并查找出现频率最高的3组7位数字序列
解决方案
核心逻辑
不需要提前对行内容排序,直接提取所有连续7位数字组合全局统计频率即可,步骤如下:
- 逐行读取文本,去除每行的换行符、分隔符等无效字符,得到17位连续数字字符串
- 对每个17位字符串滑动提取所有连续7位子串:第1-7位、第2-8位…第11-17位,每行共生成11个7位序列
- 用字典统计所有序列的出现次数
- 按统计值倒序排序,取前3个结果
可直接运行的Python实现
from collections import defaultdict seq_counter = defaultdict(int) # 替换为你的实际文件路径 file_path = "your_file.txt" with open(file_path, "r", encoding="utf-8") as f: for line in f: # 去除空白、分隔符,仅保留数字 digit_line = line.strip().replace(" ", "").replace(",", "") # 跳过长度异常的行 if len(digit_line) != 17: continue # 滑动提取7位序列 for idx in range(11): current_seq = digit_line[idx:idx+7] seq_counter[current_seq] += 1 # 取频率最高的3组 top3_seqs = sorted(seq_counter.items(), key=lambda x: x[1], reverse=True)[:3] # 输出结果 print("频率Top3的7位数字序列:") for seq, cnt in top3_seqs: print(f"序列:{seq},出现次数:{cnt}")
补充说明
3883行的数据量极小,上述方案运行速度极快,无需额外优化。如果你的数字有其他分隔符,调整digit_line对应的字符替换规则即可。
内容的提问来源于stack exchange,提问作者ליאור כהן
相关产品推荐
相关产品推荐

