2015-09-28 66 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