2015-09-28 97 views
0

作爲Python的初學者我想要實現的聲音聽起來很簡單,但我無法讓python按照需要工作。拆分一個csv文件的列

我有幾個頭一個CSV文件,例如:

Area Facility 
AAA  car, train, bus 
BBB  car 
CCC  car, bus, tram 
DDD  bicycle 
EEE  car, bus, train, tram, walk 
FFF  train, tram, plane, helicopter 

我想要的「設施」欄分成不同的單詞,然後運行一些查詢(例如獨特的設施)。我希望的輸出是火車,有軌電車,飛機,步行等,作爲列2中的列表。

我能夠成功地將csv拆分爲兩列,但如果我進一步迭代它將其拆分爲單個字母。

import csv 

fOpen1=open('C:\data.csv') 

Facilities=csv.reader(fOpen1) 
unique=[] 

for row in Facilities: 
    for facility in row[1]: 
     if row[13] not in unique: 
     unique.append(row[13]) 

我環顧四周,發現使用split.lines人,但有兩種使用它沒有運氣。

任何建議/想法?

謝謝!

回答

2

這裏是分割

文檔字符串的文檔:S.split(SEP =無,maxsplit = -1) - >

返回的S中的單詞的列表,使用字符串列表sep作爲分隔符字符串。 如果給出maxsplit,則最多可以完成maxsplit分割。如果sep不是 指定的或者是None,則任何空格字符串都是分隔符,並且空字符串將從結果中刪除。

基本上,如果你調用split不帶參數,它通過調用分割與字符,例如按空白進行分割(在數據集中的列),你可以在任何其它字符分割

print("car, train, bus".split(',')) 
['car', ' train', ' bus'] 
+0

這工作正常,但我現在有問題的循環。我想我必須自己弄明白。感謝您的幫助@Maxymoo。 – VGu

0

, csv文件分離列,如果在第一列和第二列之間沒有,,輸出對於每個線將是這樣的:

[「區設施」 ]

[ 'AAA車', '火車', '總線']

[ 'BBB車']

[ 'CCC車', '公共汽車', '電車']

[ 'DDD自行車']

[ 'EEE車', '公共汽車', '火車', '電車', '走' ]

[ 'FFF火車', '電車', '飛機', '直升機']

因此,你可以使用list的第一個元素的split拿到第一家工廠。其他設施存儲在list的其餘部分。你的目標可以達到如下:

import csv 

fOpen1=open('C:\data.csv') 

Facilities=csv.reader(fOpen1) 
unique=[] 

for row in Facilities: 
    first_facility = row[0].split()[1] # by default, use space to split 
    if first_facility not in unique: 
     unique.append(first_facility) 
    for rest_facility in row[1:]: 
    if rest_facility not in unique: 
     unique.append(rest_facility) 

print unique 
+0

@ Hooting-它給我一個錯誤消息 - 列表索引超出範圍。 – VGu

+0

@VGu請發佈您的輸入 – Hooting

+0

我的輸入與原貼中張貼的表類似。只是有更多的專欄。你想讓我發佈這個數據集的摘錄嗎? – VGu