用python解析csv文件

用python解析csv文件,python,csv,Python,Csv,我有以下格式的csv文件: x1 x2 x3 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 有人能告诉我如何访问此文件中的第一列吗?按名称访问列(我不确定您的分隔符是否实际是',但您可以将其更改为,'): 要按名称访问列(我不确定您的分隔符是否实际为',但您可以将其更改为,'): 无需使用csv模块即可阅读: with open('data

我有以下格式的csv文件:

    x1   x2    x3
    1     1     1
    2     2     2
    3     3     3
    4     4     4
    5     5     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']
[1, 2, 3, 4, 5]
使用
打开文件,并保证文件将关闭
只要你一离开。在我们的例子中,在
打印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']
[1, 2, 3, 4, 5]

结论:
csv
模块很棒,但是Python功能强大,即使在很多情况下不使用它也可以做到。如果文件内容有点不规则,并且
csv
卡死了,最好知道如何“手工”读取。

无需使用
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']
[1, 2, 3, 4, 5]
使用
打开文件,并保证文件将关闭
只要你一离开。在我们的例子中,在
打印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']
[1, 2, 3, 4, 5]

结论:
csv
模块很棒,但是Python功能强大,即使在很多情况下不使用它也可以做到。如果文件内容有点不规则,
csv
阻塞了它,知道如何“手工”操作总是好的。

你说那是逗号分隔的文件,但我在数据中没有看到任何注释。你说那是逗号分隔的文件,但是我在数据中没有看到任何注释。@user2386695:这意味着您没有指定正确的分隔符。哪个字符将一个值与下一个值分开?可能是制表符吗?@user2386695:这意味着您没有指定正确的分隔符。哪个字符将一个值与下一个值分开?也许是账单吧?