-2

我在这里逐行读取 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,,,

如您所见,有时会有空白。

在上面的代码中,我试图获取特定列中的所有唯一值,但这不起作用,因为列有时会发生变化,因为它不考虑空白。

如何解释所有空白并从特定列中获取所有不同的值?

4

2 回答 2

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])如果你想摆脱空值,你可以使用或其他东西。

于 2012-08-27T16:55:09.693 回答
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'])
于 2012-08-27T16:42:07.350 回答