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

如何统计TXT文件每行数字数量并找出含数字最多的行

找出文本文件中含数字最多的行

你需要在遍历每行时,跟踪当前数字数量最多的行及其数字个数,直接在循环内完成比较和更新即可——没必要把所有行都存进列表,能省不少内存(毕竟是5万行的大文件)。

基础版代码(找单一行)

max_digits = 0
max_line = ""

with open('account_ids.txt') as f:
    for line in f:
        # 用生成器表达式快速计算当前行的数字数量,比嵌套循环更简洁
        digits_in_line = sum(1 for char in line if char.isdigit())
        # 如果当前行数字更多,更新最大值和对应行
        if digits_in_line > max_digits:
            max_digits = digits_in_line
            max_line = line.rstrip('\n')  # 去掉末尾换行符,不需要的话可以删掉

# 输出结果
print(f"含数字最多的行: {max_line}")
print(f"数字数量: {max_digits}")

进阶版代码(处理多行并列最多的情况)

如果有好几行数字数量相同且都是最大值,用列表存储所有符合条件的行:

max_digits = 0
max_lines = []

with open('account_ids.txt') as f:
    for line in f:
        digits_in_line = sum(1 for char in line if char.isdigit())
        if digits_in_line > max_digits:
            max_digits = digits_in_line
            max_lines = [line.rstrip('\n')]
        elif digits_in_line == max_digits:
            max_lines.append(line.rstrip('\n'))

print(f"含数字最多的行共有 {len(max_lines)} 行,数字数量: {max_digits}")
for idx, line in enumerate(max_lines, 1):
    print(f"第{idx}行: {line}")

关键说明

  • 生成器表达式sum(1 for char in line if char.isdigit())替代了你原来的嵌套循环,代码更简洁且效率相当。
  • 全程不需要额外存储所有行,遍历过程中实时更新最大值,内存占用极低。
  • line.rstrip('\n')是为了去掉每行自带的换行符,要是你想保留原行的格式(包括换行),直接用line就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:25:18