用python读取csv并处理空白

时间:2012-08-27 16:21:35

标签: python

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

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

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

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

2 个答案:

答案 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'])