Python读取大CSV遇编码错误,求无循环提取行数据转列表方案
解决CSV读取UnicodeDecodeError并高效提取行数据
1. 修复UnicodeDecodeError错误
报错里的0xe5对应西欧语言的å字符,说明你的CSV文件不是UTF-8编码,大概率用的是Latin-1(ISO-8859-1)或CP1252编码。修改read_csv的encoding参数就能解决:
import pandas as pd # 优先用latin-1编码读取,覆盖多数西欧语言场景 data = pd.read_csv('BM1-2022-Gruppe_18_stål_8mm.csv', encoding='latin-1')
如果上面的代码还是报错,换成encoding='cp1252'试试,这是Windows系统常用的西欧字符编码。
2. 高效提取某一行转列表(无需for循环)
针对600+列的大型文件,直接用pandas的内置索引方法就能快速提取,完全不需要循环:
方式一:按行号提取(索引从0开始)
比如要提取第3行(对应索引2):
# 直接转成列表 target_row = data.iloc[2].tolist()
方式二:按自定义行标签提取
如果你的行有自定义索引标签:
# 替换成实际的行标签 target_row = data.loc["你的行标签"].tolist()
极致优化:只加载目标行(超大型文件首选)
如果文件大到加载全量数据占内存,直接跳过无关行,只读取目标行,效率拉满:
# 提取第3行:跳过前2行,仅读取1行 target_row_df = pd.read_csv('BM1-2022-Gruppe_18_stål_8mm.csv', encoding='latin-1', skiprows=2, nrows=1) target_row = target_row_df.iloc[0].tolist()
内容的提问来源于stack exchange,提问作者tedch
相关产品推荐
相关产品推荐

