我有一个csv文件,其中包含一些none值,我希望删除那些包含所有none值的列
Name class marks1 marks2
A 10th 67 55
B 10th None None
C 10th 43 None
在上表中,我需要删除B,因为所有标记都是none,并使用剩余的学生创建一个新表。我需要一个更新的csv文件
Name class marks1 marks2
A 10th 67 55
C 10th 43 None
我试过这个:
import csv
lines = list()
with open('f_name', 'r') as readFile:
reader = csv.reader(readFile)
for row in reader:
lines.append(row)
#print(row[4:])
if row[2:] == 'None':
print(row)
with open(f_name, 'w') as writeFile:
writer = csv.writer(writeFile)
writer.writerows(lines)
您可以筛选标记1和标记2均不为空的行
if row[2:] == 'None'
只需检查数组切片是否等于字符串,当然永远不会等于字符串在数组切片上循环并检查是否至少有一个元素不等于字符串
'None'
当然,只有当条件为true时,才需要
append
该行更经济的方法是一次读写一行
您不能同时读取和写入同一文件,因此这将为输出文件使用不同的名称。如果您像最初的方法一样将所有行读入内存,那么一旦内存中有了所有数据,您当然可以覆盖原始文件。缺点是您只能使用适合内存的文件;对于大文件,这往往会变得很慢
相关问题 更多 >
编程相关推荐