如何统计文件中长度为10位且以1开头的整数?
统计10位且以1开头的数字数量
你的代码存在几处明显问题,直接导致运行失败:
- 语法错误:
if(len(n)==10:缺少闭合括号,正确写法为if len(n) == 10: - 判断逻辑错误:
startswith(1)需传入字符串参数'1'而非整数1,且无需遍历字符,直接判断整个字符串的开头即可 - 函数逻辑不完整:当数字长度不等于10位时,函数没有返回值,应返回
False
修正后的代码
import re with open(r"C:\Desktop\file.csv") as file: # 读取所有数字字符串 data = file.read() numbers = re.findall(r'\d+', data) def filter_valid(n): return len(n) == 10 and n.startswith('1') # 过滤并统计符合条件的数字数量 valid_count = len(list(filter(filter_valid, numbers))) print(valid_count)
更简洁的写法(无需filter函数)
import re with open(r"C:\Desktop\file.csv") as file: numbers = re.findall(r'\d+', file.read()) count = sum(1 for num in numbers if len(num) == 10 and num.startswith('1')) print(count)
关键说明
你担心的「数字是整数而非字符串」并非核心问题——从文件读取的内容本身是文本,re.findall提取出的是字符串形式的数字,直接通过字符串操作判断长度和开头比转成整数更高效(还能避免超大整数的潜在问题)。不管是.txt还是.csv文件,只要数据格式是每行一个数字(或数字以非数字字符分隔),以上代码都能正常处理。
内容的提问来源于stack exchange,提问作者kyblueraider
相关产品推荐
相关产品推荐

