拆分csv文件的列

时间:2015-09-28 01:35:05

标签: python csv for-loop

作为Python的初学者我想要实现的目标听起来非常简单,但我无法让python按照需要工作。

我有一个带有多个标题的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 个答案:

答案 0 :(得分:2)

以下是拆分

的文档
  

Docstring:S.split(sep = None,maxsplit = -1) - >字符串列表

     

使用sep作为分隔符字符串,返回S中单词的列表。   如果给出maxsplit,则最多完成maxsplit分割。如果不是sep   指定或是None,任何空格字符串都是分隔符并且为空   字符串将从结果中删除。

基本上,如果你在没有参数的情况下调用split,它会在空格(数据集中的列)上拆分,你可以通过调用带有该字符的split来拆分任何其他字符,例如

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

答案 1 :(得分:0)

由于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']

因此,您可以使用split的第一个元素list来获取第一个设施。其他工具存储在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