使用python csv reader忽略“blank”(未填充)行

问题描述 投票:1回答:4

每一个人。

我无法找到一种pythonic方法来忽略CSV中的“空白”行。我使用引号,因为我说的是看起来像'','','','',''的行。这是一个CSV(空行可以是随机的):

id,name,age
1,alex,22
3,tiff,42
,,
,,
4,john,24

这是代码:

def getDataFromCsv(path):
    dataSet = []
    with open(unicode(path), 'r') as stream:
        reader = csv.reader(stream, delimiter=',')
        reader.next() # ignoring header
        for rowdata in reader:
            # how to check here?
            dataSet.append(rowdata)
    return dataSet

以下是我一直在阅读的类似问题,但特别是与此不同:python csv reader ignore blank row

python csv reader
4个回答
8
投票

您可以使用any检查行中的任何列是否包含数据:

for rowdata in reader:
    # how to check here?
    if any(x.strip() for x in rowdata):
        dataSet.append(rowdata)

-1
投票

关于什么:

if len(rowdata) > 0:
    dataSet.append(rowdata)

或者我错过了你问题的一部分?


-1
投票

你可以使用内置函数any

for rowdata in reader:
    # how to check here?
    if not any(row):
        continue
    dataSet.append(rowdata)

-1
投票
with open(fn, 'r') as csvfile:
    reader = csv.reader(csvfile)
    data = [row for row in reader if any(col for col in row)]
  • 打开CSV文件
  • 实例化csv.reader()对象
  • 使用列表理解来: 迭代CSV行 迭代行中的列 检查行中的任何列是否有值,如果有,则添加到列表中
© www.soinside.com 2019 - 2024. All rights reserved.