2011-10-13 41 views
1

我有一个包含下列值如何阅读单个值包含使用python

"Spam2,pank",Spam3,Spam6,Spam7 
Spam1,Spam5,Spam0,Spam9 

,我使用下面的Python代码读取特定列

for line in open('D:\eggs2.csv','rb'): 
    columns = line.split(",") 
    print columns[0] 
CSV文件CSV文件逗号

它给人的输出是: -

"Spam2 
Spam1 

,而我期待:

Spam2,pank 
Spam1 

请帮我解决这个问题。

+7

查看http://docs.python.org/library/csv.html –

+0

import csv并让它为你解析。 –

回答

6

您不必重新发明轮子,python csv模块完成了一项完美的工作。

import csv 

csv_file = open('D:\eggs2.csv','rb') 
csv_reader = csv.reader(csv_file) 
for row in csv_reader: 
    print row[0] 

csv_file.close() 

@see python csv

-1

您可以将其拆分两次。首先,将其拆分为'''"\w"'''之类的东西,即引号内的所有字母数字字符。结果是每个分组的列表。然后你会再次分裂,这次为',',对于每个导致你第一次分裂的列表。然后你扁平化列表。

0

这取决于你想要什么样的红色数据结构的CSV成。这会将数据加载到元组列表中。每一行都将是列表中的一个条目,每一行都将是一个字符串值的元组。

我想创建一个辅助函数读取我用这一切的时候

def readfile(filepath, delim):  
    with open(filepath, 'r') as f:   
     return [tuple(line.split(delim)) for line in f] 

data = readfile('D:\eggs2.csv', ',') 

有使用的beneftis文件(它处理收盘,excpetions等),但你需要上Python 2.7+

如果你想使用'|'在未来你可以不用重新编写代码。