同时删除包含文本的空白行和行

时间:2016-10-19 09:34:26

标签: python csv rows

这里的编程新手。通过谷歌和论坛(以及许多试验和错误)后,我无法找到解决问题的简洁方法。

我想在我的电子表格/ CSV文件中删除一些初始行(前10行),而我确实找到了解决方法:

    all(next(read) for i in range(10))

它似乎无法删除我所拥有的CSV文件中的空白行。我要删除的前10行包括那些空白行。我认为如果行中有字符串,上面的行只会删除行。

我的完整代码到目前为止[编辑1]:也许这可行吗?

    import csv
    with open('filename.csv') as csvfile:
       non_blank_row=[]
       filecsv = csv.reader(csvfile, delimiter=",")
       for row in filecsv:
              non_blank_row.append(row)

       better_blank_row = non_blank_row[[i for i in range(len(non_blank_row)) if non_blank_row!=[]

[EDIT2]:当我尝试打印(better_blank_row)时,我做了:

    for i in better_blank_row:
        print(better_blank_row)

然而,我不确定为什么输出没有出来......就像shell冻结一样。 任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

你的for循环只是迭代 filecsv 。它没有做任何事情。 你想要像

这样的东西

non_blank_rows = [] for row in filecsv: if row: # empty strings are false-y non_blank_rows.append(row)

现在,您可以将filecsv设置为non_blank_rows。 请注意,执行所有这些操作的更多pythonic方法可能是使用列表解析。我会为此编写语法,但如果你没有听说过这个,你可能想要自己查找它们。

filecsv = [row for row in filecsv if row]

答案 1 :(得分:0)

您可以在删除特定行后使用,以便编写新的csv文件

import csv
#read csv file
csvfile =  open('/home/17082016_ExpiryReport.csv', 'rb')
filecsv = csv.reader(csvfile, delimiter=",")

#following line increment pointer for blank line also up to range 10 lines  
[next(filecsv) for i in range(10)]

#write csv file
with open('/home/17082016_ExpiryReport_output.csv', 'wb') as csvfile:
    csvwriter = csv.writer(csvfile, delimiter=',')
    [csvwriter.writerow(i) for i in filecsv ]