我有一个csv文件,格式如下:
x1 x2 x3
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
有人能告诉我如何才能访问此文件中的第一列吗?
发布于 2013-05-27 20:44:57
要按名称访问列(我不确定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-28 00:16:19
你可以不使用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中,打开的文件,在这里是fobj
,是一个迭代器。我们使用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
模块很棒,但它的功能非常强大,在很多情况下,即使没有它,您也可以使用它。如果文件内容有点不规则,并且csv
阻塞了它,那么知道如何“手动”操作总是很好的。
https://stackoverflow.com/questions/16780299
复制相似问题