这里的编程新手。通过谷歌和论坛(以及许多试验和错误)后,我无法找到解决问题的简洁方法。
我想在我的电子表格/ 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冻结一样。 任何帮助将不胜感激!
答案 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 ]