使用np.genfromtxt读取CSV文件触发ValueError错误求助
解决np.genfromtxt读取CSV时行列数不匹配的ValueError
常见原因及解决办法:
字段内包含未转义的逗号
很多CSV里会有带引号的文本字段(比如"London, UK"),默认的delimiter=","会把字段里的逗号也当成分隔符,直接导致列数超标。试试启用自动类型推断和字段解析:current_account = np.genfromtxt("q3_1_current_account.csv", delimiter=",", dtype=None, autostrip=True, encoding='utf-8')dtype=None让numpy自动识别每列的数据类型,autostrip=True清理字段前后的空白,encoding避免乱码问题。行尾格式不兼容
Windows和Linux的行尾符(\r\nvs\n)可能让numpy误判行边界,把多行当成一行读。可以先跳过错误行排查问题,或者强制指定行尾格式:# 先忽略错误行,看能正常读取的部分 current_account = np.genfromtxt("q3_1_current_account.csv", delimiter=",", invalid_raise=False, encoding='utf-8') # 强制用LF解析行尾 with open("q3_1_current_account.csv", 'r', newline='\n') as f: current_account = np.genfromtxt(f, delimiter=",", encoding='utf-8')单元格含隐藏换行符
有些单元格里有换行文本(比如多行备注),numpy会把这些换行当成行分隔符,导致列数混乱。可以禁用注释解析,或者用转换器处理换行:# 关闭注释解析,避免把#之类的字符当成行结束 current_account = np.genfromtxt("q3_1_current_account.csv", delimiter=",", comments=None, encoding='utf-8') # 把字段内的换行替换成空格(假设共280列) converters = {col: lambda x: x.replace('\n', ' ') for col in range(280)} current_account = np.genfromtxt("q3_1_current_account.csv", delimiter=",", converters=converters, encoding='utf-8')强制读取指定列数
如果确认第一行的280列是正确的,直接指定读取前280列:current_account = np.genfromtxt("q3_1_current_account.csv", delimiter=",", usecols=range(280), encoding='utf-8')
内容的提问来源于stack exchange,提问作者Seoyoung Park
相关产品推荐
相关产品推荐

