我正在逐行读取csv文件:
def GetDistinctValues(theFile, theColumn):
lines=theFile.split('\n')
allValues=[]
for line in lines:
if line:
distinctValue=line.split(',')[theColumn]
allValues.append(distinctValue)
return list(set(allValues))
这是我的csv的样子:
1,hat,dog
2,,cat
3,pants,elephant
4,,,
如你所见,有时会有空白。
在上面的代码中我试图获取特定列中的所有唯一值,但这不起作用,因为列有时会因为不考虑空白而移位。
如何解释所有空白并从特定列中获取所有不同的值?
答案 0 :(得分:3)
可能是这样的:
import csv
def get_distinct_values(filename, column):
with open(filename, "rb") as fp:
reader = csv.reader(fp)
return set(line[column] for line in reader)
给出了
>>> get_distinct_values("ccol.csv", 0)
set(['1', '3', '2', '4'])
>>> get_distinct_values("ccol.csv", 1)
set(['', 'hat', 'pants'])
>>> get_distinct_values("ccol.csv", 2)
set(['', 'elephant', 'dog', 'cat'])
如果你想摆脱空值,可以使用set(line[column] for line in reader if line[column])
或其他东西。
答案 1 :(得分:2)
这将帮助您入门:
import csv
csvf=csv.reader(open(yourfile,'rb'))
col=0
rtr=set()
for row in csvf:
rtr.add(row[col])
print rtr
在您的示例中,打印:
set(['1', '3', '2', '4'])