如何用Python统计CSV文件中单个数字的数量
如何用Python统计CSV文件中单个数字的数量
嘿,我完全懂你遇到的麻烦!你要统计CSV里所有独立数字项的总数,但之前用csv模块搭配len和sum得到的结果完全不对——实际应该是942,却跑出了5328,这肯定是统计的对象搞错啦😅
先说说你之前可能踩的坑
你得到的5328看起来更像是所有数字的字符总长度(比如17795是5个字符,20223是5个字符,把这些加起来就会远大于实际的数字项数量)。而我们真正要统计的是每个逗号分隔出来的数字项的个数,不管这个数字是几位数。
解决方案来啦
这里给你两种靠谱的方法,按需选就行:
方法一:不用csv模块,直接逐行处理(简单直观)
如果你的CSV里没有复杂格式(比如带引号的内容),直接读文件拆分逗号就够了:
total_numbers = 0 # 把这里替换成你的CSV文件路径 with open('your_numbers.csv', 'r', encoding='utf-8') as f: for line in f: # 去掉行首尾的空白和换行符,按逗号拆分 items = line.strip().split(',') # 过滤掉空字符串(比如行尾有多余逗号、空行的情况) valid_items = [item for item in items if item.strip()] total_numbers += len(valid_items) print(f"总共有{total_numbers}个数字")
方法二:用csv模块处理(更规范,适配复杂场景)
如果你的CSV可能有特殊格式(比如偶尔出现带引号的字段),用官方的csv模块更稳妥:
import csv total_numbers = 0 with open('your_numbers.csv', 'r', newline='', encoding='utf-8') as f: reader = csv.reader(f) for row in reader: # 同样过滤掉空的项,避免空行或无效内容干扰 valid_items = [item for item in row if item.strip()] total_numbers += len(valid_items) print(f"总共有{total_numbers}个数字")
为啥这两种方法能解决问题?
不管是直接拆分还是用csv.reader,核心都是统计每行里有效数字项的个数,再累加所有行的数量,而不是去数每个数字的字符长度,这样就能得到你想要的942啦!
备注:内容来源于stack exchange,提问作者mr potato guy
相关产品推荐
相关产品推荐

