-2

ここでcsvファイルを1行ずつ読んでいます:

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 に答える