2011-10-13 46 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+

如果你想使用'|'在未來你可以不用重新編寫代碼。