0

I have a csv file in the following format:

    x1   x2    x3
    1     1     1
    2     2     2
    3     3     3
    4     4     4
    5     5     5

Can someone please let me know how can I access just the first column in this file?

4

2 回答 2

3

按名称访问列(我不确定您delimiter是否真的是' ',但您可以将其更改为','):

import csv
with open('data.csv', 'rb') as f:
    r = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
    print [row['x1'] for row in r]

['1', '2', '3', '4', '5']
于 2013-05-27T20:44:57.420 回答
1

您可以在不使用csv模块的情况下阅读它:

with open('data.csv') as fobj:
    next(fobj)
    x1 = [line.split(None, 1)[0] for line in fobj]
 print x1 

结果:

['1', '2', '3', '4', '5']

with打开文件并保证它会在您删除后立即关闭。在我们的例子中print x1。在 Python 中,打开的文件 herefobj是一个迭代器。我们使用列表解析来使用第一行next并提取每行中的第一个条目。在.split(None, 1)各种空格处拆分,例如空格、制表符或换行符,并将拆分限制在第一列。这对于大文件可能性能更高,但在这里肯定无关紧要。平原.split()也可以。获取列表的[0]第一个元素。

将数字转换为整数的变化:

with open('data.csv') as fobj:
    next(fobj)
    x1 = [int(line.split(None, 1)[0]) for line in fobj]
 print x1 

结果:

[1, 2, 3, 4, 5]

结论:该csv模块很棒,但是 Python 非常强大,在很多情况下即使没有它你也可以做到。如果文件内容有些不规则并且csv阻塞,那么知道如何“手动”操作总是好的。

于 2013-05-28T00:16:18.907 回答