You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3如何从CSV列中读取不同长度的字符集合?

从CSV文件读取长度不同的列数据(Python 3)

嘿Rhein,很高兴你能享受Python的学习过程!看你现在在处理犯罪数据的CSV文件,想从里面提取不同长度的列,我来给你梳理下正确的做法~

你当前用readline(8)按固定字符数读取的方式,显然不适合列长度不一致的场景——CSV文件本质是用**分隔符(通常是逗号)**来区分列的,不是按固定宽度排版的,手动截取字符很容易出错,比如会不小心截到下一列的内容。

Python标准库自带的csv模块就是专门解决这类问题的,用它能轻松处理任意长度的列,下面给你两种常用的实现方式:

方式一:用csv.DictReader(推荐,可读性强)

如果你的CSV文件第一行是列名(比如id,case_number,...),用DictReader会自动把每一行转换成字典,直接通过列名就能获取对应的值,完全不用管列的长度:

import csv

# 打开CSV文件,注意指定编码和newline参数避免换行问题
with open('C:/Users/aferdous/python-works/data-set/crime-data/crime_data-windows-1000.csv', 'r', newline='', encoding='utf-8') as crime_data:
    # 初始化DictReader,自动识别表头作为字典的键
    crime_reader = csv.DictReader(crime_data)
    
    # 遍历每一行数据
    for row in crime_reader:
        # 直接通过列名提取数据
        id_value = row['id']  # 替换成你实际的列名
        case_number = row['case_number']  # 替换成你实际的列名
        
        # 打印或处理数据
        print(f"ID: {id_value}, 案件编号: {case_number}")

方式二:用csv.reader(适合无表头的情况)

如果你的CSV文件没有表头,就用csv.reader,通过列的索引位置来提取数据:

import csv

with open('C:/Users/aferdous/python-works/data-set/crime-data/crime_data-windows-1000.csv', 'r', newline='', encoding='utf-8') as crime_data:
    crime_reader = csv.reader(crime_data)
    
    # 如果有表头,先跳过第一行(没有的话就删掉这行)
    next(crime_reader)
    
    for row in crime_reader:
        # 假设ID是第0列,案件编号是第1列,按实际索引调整
        id_value = row[0]
        case_number = row[1]
        
        print(f"ID: {id_value}, 案件编号: {case_number}")

为什么不用手动截取?

CSV文件里可能存在包含分隔符的内容(比如某列内容是"Doe, John"),手动截取字符根本无法正确识别这种情况,但csv模块会自动处理带引号的特殊内容,保证每一列数据的准确性。

继续加油做你的项目呀,Python的标准库总能帮你省不少力气!

内容的提问来源于stack exchange,提问作者roger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:46:27