如何统计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
相关产品推荐
相关产品推荐

