[英]Parsing csv file in python
我有以下格式的csv文件:
x1 x2 x3
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
有人可以让我知道如何仅访问此文件的第一列吗?
要按名称访问列(我不确定您的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中,打开的文件(这里为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
模块很棒,但是Python非常强大,即使在很多情况下,即使没有它,您也可以做到。 如果文件内容有些不规则并且csv
令人窒息,那么最好知道如何“手动”执行文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.