使用 python csv reader 忽略 "blank"(未填充)行
ignore "blank" (unfilled) row with python csv reader
各位。
我找不到忽略 CSV 中 "blank" 行的 pythonic 方法。我使用引号是因为我在谈论看起来像 '','','','','' 的行
这是一个 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
这是我一直在阅读的类似问题,但与此特别不同:
怎么样:
if len(rowdata) > 0:
dataSet.append(rowdata)
还是我漏掉了你问题的一部分?
您可以使用 any
检查行中是否有任何列包含数据:
for rowdata in reader:
# how to check here?
if any(x.strip() for x in rowdata):
dataSet.append(rowdata)
您可以使用内置函数any
:
for rowdata in reader:
# how to check here?
if not any(row):
continue
dataSet.append(rowdata)
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 行
- 迭代行中的列
- 检查行中的任何列是否有值,如果有,添加到列表中
危险区..也许恢复旧线程..
为什么不使用过滤器?然后我认为大型 csv 文件没有内存问题。
类似于:
for data in filter(any, reader):
print(data)
各位。
我找不到忽略 CSV 中 "blank" 行的 pythonic 方法。我使用引号是因为我在谈论看起来像 '','','','','' 的行 这是一个 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
这是我一直在阅读的类似问题,但与此特别不同:
怎么样:
if len(rowdata) > 0:
dataSet.append(rowdata)
还是我漏掉了你问题的一部分?
您可以使用 any
检查行中是否有任何列包含数据:
for rowdata in reader:
# how to check here?
if any(x.strip() for x in rowdata):
dataSet.append(rowdata)
您可以使用内置函数any
:
for rowdata in reader:
# how to check here?
if not any(row):
continue
dataSet.append(rowdata)
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 行
- 迭代行中的列
- 检查行中的任何列是否有值,如果有,添加到列表中
危险区..也许恢复旧线程..
为什么不使用过滤器?然后我认为大型 csv 文件没有内存问题。
类似于:
for data in filter(any, reader):
print(data)