如何用Python流式读取并解析含多行字段的大型CSV文件?
解决CSV流式解析中多行字段的问题
你当前的代码会把每一行单独传给csv.reader,但CSV中带引号包裹的多行字段会被拆成独立行,导致解析错误——因为csv.reader需要处理完整的CSV数据流,而非孤立的单行。
直接让csv.reader处理响应的流式文本流即可解决问题,无需手动拆分行:
import csv import io import httpx with httpx.stream("GET", url) as r: # 将字节流包装为文本流,编码需与CSV文件实际编码匹配(如utf-8、gbk) text_stream = io.TextIOWrapper(r.raw, encoding="utf-8") # csv.reader会自动识别带引号的多行字段 for row in csv.reader(text_stream): # 处理解析后的行数据 print(row)
关键说明
r.raw是httpx返回的原始字节流,支持流式读取,不会一次性加载整个文件到内存io.TextIOWrapper负责将字节解码为文本,务必指定正确的编码,否则会出现乱码或解析错误csv.reader遵循CSV规范解析整个数据流,能正确识别引号包裹的多行字段,无需手动处理换行逻辑
内容的提问来源于stack exchange,提问作者Serge
相关产品推荐
相关产品推荐

