我是使用python处理csv文件的新手,我想编写允许我执行以下操作的代码:我有一个模式:
pattern="3-5;7;10-16"
(可能会有所不同)
我想删除(在这种情况下)第3行,第5行,第7行和第10行到第16行
有没有人知道如何做到这一点?
答案 0 :(得分:0)
您不能简单地删除csv中的行。相反,您必须将其读入,然后使用可接受的值将其写回。以下代码有效:
import csv
pattern="3-5;7;10-16"
off = []
for i in pattern.split(';'):
if '-' in i:
off += range(int(i.split('-')[0]),int(i.split('-')[1])+1)
else:
off += [int(i)]
with open('test.txt') as f:
reader = csv.reader(f)
reader = [','.join(item) for i,item in enumerate(reader) if i+1 not in off]
print reader
with open('input.txt', 'w') as f2:
for i in reader:
f2.write(i+'\n')