繁体   English   中英

在python中解析csv文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM