作为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,但也没有运气使用它。
有任何建议/想法吗?
谢谢!
答案 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