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

如何使用Python在CSV文档中跨行索引并提取指定列数据?

如何从CSV文件中提取指定列或单个值

先说说你现有代码的问题

你写的循环里,for i in x已经在逐行遍历文件对象,此时i就是当前行的内容,但你又调用了x.readline(),这会让文件指针跳到下一行,导致只能打印出奇数行;而且你没有对每行内容做分割处理,自然只能看到整行文本。


方法一:手动分割处理(适合简单CSV)

如果你的CSV格式很规整(没有逗号嵌套、引号包裹这类复杂情况),可以直接按逗号分割每行内容,再提取目标列:

1. 批量提取所有姓名(第一列)

with open('text.csv', 'r') as f:
    for line in f:
        # 先去掉行首尾的换行符,再按逗号分割,最后给每个元素去除前后空格
        columns = [col.strip() for col in line.strip().split(',')]
        # 第一列索引为0,直接打印
        print(columns[0])

运行后输出:

John
Amy
Franky

2. 提取单个指定值(比如第二行第二列的数字6)

with open('text.csv', 'r') as f:
    # 把所有行读进列表,方便按索引定位
    all_lines = f.readlines()
    # 第二行对应索引1,分割后取第二列(索引1)
    target_value = [col.strip() for col in all_lines[1].strip().split(',')][1]
    print(target_value)

运行后输出:6


方法二:用Python内置csv模块(推荐,适配复杂CSV)

如果CSV存在格式复杂的情况(比如单元格里有逗号、被引号包裹),手动分割会出错,这时候用官方的csv模块更稳妥:

1. 批量提取所有数字(第二列)

import csv

with open('text.csv', 'r') as f:
    # 创建reader对象,自动处理分隔逻辑
    reader = csv.reader(f)
    for row in reader:
        # 注意原文件逗号后有空格,所以row里的元素带空格,需要strip()
        print(row[1].strip())

输出:

3
6
2

2. 用DictReader按列名提取(更直观)

给列命名后,可以直接通过列名获取内容,不用记索引:

import csv

with open('text.csv', 'r') as f:
    # 指定列名对应CSV的三列:姓名、数字、颜色
    reader = csv.DictReader(f, fieldnames=['name', 'number', 'color'])
    for row in reader:
        # 直接通过列名取颜色列
        print(row['color'].strip())

输出:

green
red
blue

3. 提取单个指定值(比如第三行第三列的blue)

import csv

with open('text.csv', 'r') as f:
    reader = csv.reader(f)
    # 把reader转为列表,方便按索引访问
    all_rows = list(reader)
    # 第三行索引为2,第三列索引为2,strip()去空格
    print(all_rows[2][2].strip())

输出:blue

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:23:03