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

2024-09-27 09:34:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是编程新手。在浏览了google和论坛(以及许多尝试和错误)之后,我找不到一个简洁的解决问题的方法。你知道吗

我想删除电子表格/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]:当我试图打印(更好的空白行)时,我做到了:

    for i in better_blank_row:
        print(better_blank_row)

但是,我不知道为什么输出不出来。。就像外壳冻结一样。 任何帮助都将不胜感激!你知道吗


Tags: 文件csvcsvfile方法infor编程range
2条回答

for循环只是在filecsv上迭代。它什么也没做。 你想要这样的东西吗

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

现在,您可以将filecsv设置为非空行。 请注意,要做到这一切,更具python风格的方法可能是使用列表理解。我会写它的语法,但是如果你没听说过,你可能想自己查一下。你知道吗

filecsv = [row for row in filecsv if row]

在删除particuler行后,您可以将其用作写入新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 ]

相关问题 更多 >

    热门问题