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?
按名称访问列(我不确定您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']
您可以在不使用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
阻塞,那么知道如何“手动”操作总是好的。